Skip to content

Commit d5dc77b

Browse files
author
Al Viro
committed
consolidate compat lookup_dcookie()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent 76b021d commit d5dc77b

File tree

18 files changed

+20
-60
lines changed

18 files changed

+20
-60
lines changed

arch/arm64/kernel/sys32.S

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,6 @@ compat_sys_readahead_wrapper:
8484
b sys_readahead
8585
ENDPROC(compat_sys_readahead_wrapper)
8686

87-
compat_sys_lookup_dcookie:
88-
orr x0, x0, x1, lsl #32
89-
mov w1, w2
90-
mov w2, w3
91-
b sys_lookup_dcookie
92-
ENDPROC(compat_sys_lookup_dcookie)
93-
9487
compat_sys_fadvise64_64_wrapper:
9588
mov w6, w1
9689
orr x1, x2, x3, lsl #32

arch/mips/kernel/linux32.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,6 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_a2,
259259
merge_64(len_a4, len_a5));
260260
}
261261

262-
asmlinkage long sys32_lookup_dcookie(u32 a0, u32 a1, char __user *buf,
263-
size_t len)
264-
{
265-
return sys_lookup_dcookie(merge_64(a0, a1), buf, len);
266-
}
267-
268262
SYSCALL_DEFINE6(32_fanotify_mark, int, fanotify_fd, unsigned int, flags,
269263
u64, a3, u64, a4, int, dfd, const char __user *, pathname)
270264
{

arch/mips/kernel/scall64-o32.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ sys_call_table:
439439
PTR compat_sys_io_submit
440440
PTR sys_io_cancel /* 4245 */
441441
PTR sys_exit_group
442-
PTR sys32_lookup_dcookie
442+
PTR compat_sys_lookup_dcookie
443443
PTR sys_epoll_create
444444
PTR sys_epoll_ctl
445445
PTR sys_epoll_wait /* 4250 */

arch/parisc/kernel/sys_parisc32.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,6 @@ asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg)
7575
return sys_semctl (semid, semnum, cmd, arg);
7676
}
7777

78-
long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
79-
size_t len)
80-
{
81-
return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low,
82-
buf, len);
83-
}
84-
8578
asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi,
8679
u32 mask_lo, int fd,
8780
const char __user *pathname)

arch/parisc/kernel/syscall_table.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@
318318
ENTRY_SAME(alloc_hugepages) /* 220 */
319319
ENTRY_SAME(free_hugepages)
320320
ENTRY_SAME(exit_group)
321-
ENTRY_DIFF(lookup_dcookie)
321+
ENTRY_COMP(lookup_dcookie)
322322
ENTRY_SAME(epoll_create)
323323
ENTRY_SAME(epoll_ctl) /* 225 */
324324
ENTRY_SAME(epoll_wait)

arch/powerpc/include/asm/systbl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ SYSCALL_SPU(io_cancel)
239239
SYSCALL(set_tid_address)
240240
SYSX_SPU(sys_fadvise64,ppc32_fadvise64,sys_fadvise64)
241241
SYSCALL(exit_group)
242-
SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie)
242+
COMPAT_SYS(lookup_dcookie)
243243
SYSCALL_SPU(epoll_create)
244244
SYSCALL_SPU(epoll_ctl)
245245
SYSCALL_SPU(epoll_wait)

arch/powerpc/kernel/sys_ppc32.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,6 @@ asmlinkage int compat_sys_ftruncate64(unsigned int fd, u32 reg4, unsigned long h
177177
return sys_ftruncate(fd, (high << 32) | low);
178178
}
179179

180-
long ppc32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
181-
size_t len)
182-
{
183-
return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low,
184-
buf, len);
185-
}
186-
187180
long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low,
188181
size_t len, int advice)
189182
{

arch/s390/kernel/compat_wrapper.S

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -926,13 +926,6 @@ ENTRY(sys_epoll_wait_wrapper)
926926
lgfr %r5,%r5 # int
927927
jg sys_epoll_wait # branch to system call
928928

929-
ENTRY(sys32_lookup_dcookie_wrapper)
930-
sllg %r2,%r2,32 # get high word of 64bit dcookie
931-
or %r2,%r3 # get low word of 64bit dcookie
932-
llgtr %r3,%r4 # char *
933-
llgfr %r4,%r5 # size_t
934-
jg sys_lookup_dcookie
935-
936929
ENTRY(sys32_fadvise64_wrapper)
937930
lgfr %r2,%r2 # int
938931
sllg %r3,%r3,32 # get high word of 64bit loff_t

arch/s390/kernel/syscalls.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper)
118118
SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper)
119119
SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper)
120120
NI_SYSCALL /* old uname syscall */
121-
SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,sys32_lookup_dcookie_wrapper) /* 110 */
121+
SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,compat_sys_lookup_dcookie) /* 110 */
122122
SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup)
123123
NI_SYSCALL /* old "idle" system call */
124124
NI_SYSCALL /* vm86old for i386 */

arch/sparc/kernel/sys_sparc32.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -303,14 +303,6 @@ long compat_sys_fadvise64_64(int fd,
303303
advice);
304304
}
305305

306-
long sys32_lookup_dcookie(unsigned long cookie_high,
307-
unsigned long cookie_low,
308-
char __user *buf, size_t len)
309-
{
310-
return sys_lookup_dcookie((cookie_high << 32) | cookie_low,
311-
buf, len);
312-
}
313-
314306
long compat_sync_file_range(int fd, unsigned long off_high, unsigned long off_low, unsigned long nb_high, unsigned long nb_low, int flags)
315307
{
316308
return sys_sync_file_range(fd,

arch/sparc/kernel/systbls_64.S

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ sys_call_table32:
5959
/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
6060
.word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask
6161
/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
62-
.word sys32_readahead, sys32_socketcall, sys_syslog, sys32_lookup_dcookie, sys32_fadvise64
62+
.word sys32_readahead, sys32_socketcall, sys_syslog, compat_sys_lookup_dcookie, sys32_fadvise64
6363
/*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo
6464
.word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex
6565
/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid

arch/tile/kernel/compat.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ long compat_sys_pwrite64(unsigned int fd, char __user *ubuf, size_t count,
5454
return sys_pwrite64(fd, ubuf, count, ((loff_t)high << 32) | low);
5555
}
5656

57-
long compat_sys_lookup_dcookie(u32 low, u32 high, char __user *buf, size_t len)
58-
{
59-
return sys_lookup_dcookie(((loff_t)high << 32) | low, buf, len);
60-
}
61-
6257
long compat_sys_sync_file_range2(int fd, unsigned int flags,
6358
u32 offset_lo, u32 offset_hi,
6459
u32 nbytes_lo, u32 nbytes_hi)

arch/x86/ia32/sys_ia32.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,12 +226,6 @@ long sys32_vm86_warning(void)
226226
return -ENOSYS;
227227
}
228228

229-
long sys32_lookup_dcookie(u32 addr_low, u32 addr_high,
230-
char __user *buf, size_t len)
231-
{
232-
return sys_lookup_dcookie(((u64)addr_high << 32) | addr_low, buf, len);
233-
}
234-
235229
asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi,
236230
size_t count)
237231
{

arch/x86/include/asm/sys_ia32.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ asmlinkage long sys32_personality(unsigned long);
4545
long sys32_kill(int, int);
4646
long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int);
4747
long sys32_vm86_warning(void);
48-
long sys32_lookup_dcookie(u32, u32, char __user *, size_t);
4948

5049
asmlinkage ssize_t sys32_readahead(int, unsigned, unsigned, size_t);
5150
asmlinkage long sys32_sync_file_range(int, unsigned, unsigned,

arch/x86/syscalls/syscall_32.tbl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@
259259
250 i386 fadvise64 sys_fadvise64 sys32_fadvise64
260260
# 251 is available for reuse (was briefly sys_set_zone_reclaim)
261261
252 i386 exit_group sys_exit_group
262-
253 i386 lookup_dcookie sys_lookup_dcookie sys32_lookup_dcookie
262+
253 i386 lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie
263263
254 i386 epoll_create sys_epoll_create
264264
255 i386 epoll_ctl sys_epoll_ctl
265265
256 i386 epoll_wait sys_epoll_wait

fs/dcookies.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <linux/dcookies.h>
2626
#include <linux/mutex.h>
2727
#include <linux/path.h>
28+
#include <linux/compat.h>
2829
#include <asm/uaccess.h>
2930

3031
/* The dcookies are allocated from a kmem_cache and
@@ -202,6 +203,17 @@ SYSCALL_DEFINE3(lookup_dcookie, u64, cookie64, char __user *, buf, size_t, len)
202203
return err;
203204
}
204205

206+
#ifdef CONFIG_COMPAT
207+
COMPAT_SYSCALL_DEFINE4(lookup_dcookie, u32, w0, u32, w1, char __user *, buf, size_t, len)
208+
{
209+
#ifdef __BIG_ENDIAN
210+
return sys_lookup_dcookie(((u64)w0 << 32) | w1, buf, len);
211+
#else
212+
return sys_lookup_dcookie(((u64)w1 << 32) | w0, buf, len);
213+
#endif
214+
}
215+
#endif
216+
205217
static int dcookie_init(void)
206218
{
207219
struct list_head * d;

include/linux/compat.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
429429
asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
430430
compat_long_t addr, compat_long_t data);
431431

432+
asmlinkage long compat_sys_lookup_dcookie(u32, u32, char __user *, size_t);
432433
/*
433434
* epoll (fs/eventpoll.c) compat bits follow ...
434435
*/

kernel/sys_ni.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ cond_syscall(sys_quotactl);
2020
cond_syscall(sys32_quotactl);
2121
cond_syscall(sys_acct);
2222
cond_syscall(sys_lookup_dcookie);
23+
cond_syscall(compat_sys_lookup_dcookie);
2324
cond_syscall(sys_swapon);
2425
cond_syscall(sys_swapoff);
2526
cond_syscall(sys_kexec_load);

0 commit comments

Comments
 (0)