switch lseek to COMPAT_SYSCALL_DEFINE

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2013-02-24 10:52:26 -05:00
parent aee41fe2b2
commit 561c673197
15 changed files with 15 additions and 41 deletions

View File

@ -40,7 +40,7 @@ __SYSCALL(15, sys_chmod)
__SYSCALL(16, sys_lchown16) __SYSCALL(16, sys_lchown16)
__SYSCALL(17, sys_ni_syscall) /* 17 was sys_break */ __SYSCALL(17, sys_ni_syscall) /* 17 was sys_break */
__SYSCALL(18, sys_ni_syscall) /* 18 was sys_stat */ __SYSCALL(18, sys_ni_syscall) /* 18 was sys_stat */
__SYSCALL(19, compat_sys_lseek_wrapper) __SYSCALL(19, compat_sys_lseek)
__SYSCALL(20, sys_getpid) __SYSCALL(20, sys_getpid)
__SYSCALL(21, compat_sys_mount) __SYSCALL(21, compat_sys_mount)
__SYSCALL(22, sys_ni_syscall) /* 22 was sys_umount */ __SYSCALL(22, sys_ni_syscall) /* 22 was sys_umount */

View File

@ -58,11 +58,6 @@ ENDPROC(compat_sys_fstatfs64_wrapper)
* in registers or that take 32-bit parameters which require sign * in registers or that take 32-bit parameters which require sign
* extension. * extension.
*/ */
compat_sys_lseek_wrapper:
sxtw x1, w1
b sys_lseek
ENDPROC(compat_sys_lseek_wrapper)
compat_sys_pread64_wrapper: compat_sys_pread64_wrapper:
orr x3, x4, x5, lsl #32 orr x3, x4, x5, lsl #32
b sys_pread64 b sys_pread64

View File

@ -79,16 +79,6 @@ asmlinkage long sys32_sendfile64(u32 out_fd, u32 in_fd,
(loff_t __user *)offset, count); (loff_t __user *)offset, count);
} }
/* lseek() needs a wrapper because 'offset' can be negative, but the top
* half of the argument has been zeroed by syscall.S.
*/
asmlinkage int sys32_lseek(unsigned int fd, int offset, unsigned int origin)
{
return sys_lseek(fd, offset, origin);
}
asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg) asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg)
{ {
union semun u; union semun u;

View File

@ -76,7 +76,7 @@
ENTRY_SAME(socket) ENTRY_SAME(socket)
/* struct stat is MAYBE identical wide and narrow ?? */ /* struct stat is MAYBE identical wide and narrow ?? */
ENTRY_COMP(newstat) ENTRY_COMP(newstat)
ENTRY_DIFF(lseek) ENTRY_COMP(lseek)
ENTRY_SAME(getpid) /* 20 */ ENTRY_SAME(getpid) /* 20 */
/* the 'void * data' parameter may need re-packing in wide */ /* the 'void * data' parameter may need re-packing in wide */
ENTRY_COMP(mount) ENTRY_COMP(mount)

View File

@ -22,7 +22,7 @@ SYSCALL_SPU(chmod)
SYSCALL_SPU(lchown) SYSCALL_SPU(lchown)
SYSCALL(ni_syscall) SYSCALL(ni_syscall)
OLDSYS(stat) OLDSYS(stat)
SYSX_SPU(sys_lseek,ppc32_lseek,sys_lseek) COMPAT_SYS_SPU(lseek)
SYSCALL_SPU(getpid) SYSCALL_SPU(getpid)
COMPAT_SYS(mount) COMPAT_SYS(mount)
SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount) SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount)

View File

@ -146,12 +146,6 @@ asmlinkage long compat_sys_sendfile64_wrapper(u32 out_fd, u32 in_fd,
(off_t __user *)offset, count); (off_t __user *)offset, count);
} }
off_t ppc32_lseek(unsigned int fd, u32 offset, unsigned int origin)
{
/* sign extend n */
return sys_lseek(fd, (int)offset, origin);
}
long compat_sys_truncate(const char __user * path, u32 length) long compat_sys_truncate(const char __user * path, u32 length)
{ {
/* sign extend length */ /* sign extend length */

View File

@ -67,12 +67,6 @@ ENTRY(sys32_lchown16_wrapper)
llgfr %r4,%r4 # __kernel_old_uid_emu31_t llgfr %r4,%r4 # __kernel_old_uid_emu31_t
jg sys32_lchown16 # branch to system call jg sys32_lchown16 # branch to system call
ENTRY(sys32_lseek_wrapper)
llgfr %r2,%r2 # unsigned int
lgfr %r3,%r3 # off_t
llgfr %r4,%r4 # unsigned int
jg sys_lseek # branch to system call
#sys32_getpid_wrapper # void #sys32_getpid_wrapper # void
ENTRY(sys32_mount_wrapper) ENTRY(sys32_mount_wrapper)

View File

@ -27,7 +27,7 @@ SYSCALL(sys_chmod,sys_chmod,sys32_chmod_wrapper) /* 15 */
SYSCALL(sys_lchown16,sys_ni_syscall,sys32_lchown16_wrapper) /* old lchown16 syscall*/ SYSCALL(sys_lchown16,sys_ni_syscall,sys32_lchown16_wrapper) /* old lchown16 syscall*/
NI_SYSCALL /* old break syscall holder */ NI_SYSCALL /* old break syscall holder */
NI_SYSCALL /* old stat syscall holder */ NI_SYSCALL /* old stat syscall holder */
SYSCALL(sys_lseek,sys_lseek,sys32_lseek_wrapper) SYSCALL(sys_lseek,sys_lseek,compat_sys_lseek)
SYSCALL(sys_getpid,sys_getpid,sys_getpid) /* 20 */ SYSCALL(sys_getpid,sys_getpid,sys_getpid) /* 20 */
SYSCALL(sys_mount,sys_mount,sys32_mount_wrapper) SYSCALL(sys_mount,sys_mount,sys32_mount_wrapper)
SYSCALL(sys_oldumount,sys_oldumount,sys32_oldumount_wrapper) SYSCALL(sys_oldumount,sys_oldumount,sys32_oldumount_wrapper)

View File

@ -47,7 +47,6 @@ SIGN1(sys32_mq_open, compat_sys_mq_open, %o1)
SIGN1(sys32_select, compat_sys_select, %o0) SIGN1(sys32_select, compat_sys_select, %o0)
SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5) SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5)
SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1) SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1)
SIGN1(sys32_lseek, sys_lseek, %o1)
SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0) SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0)
SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0) SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0)
SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0) SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0)

View File

@ -21,7 +21,7 @@ sys_call_table32:
/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write /*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write
/*5*/ .word compat_sys_open, sys_close, compat_sys_wait4, sys_creat, sys_link /*5*/ .word compat_sys_open, sys_close, compat_sys_wait4, sys_creat, sys_link
/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod /*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, sys32_lseek /*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, compat_sys_lseek
/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 /*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause /*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice /*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice

View File

@ -218,11 +218,6 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd,
* Some system calls that need sign extended arguments. This could be * Some system calls that need sign extended arguments. This could be
* done by a generic wrapper. * done by a generic wrapper.
*/ */
long sys32_lseek(unsigned int fd, int offset, unsigned int whence)
{
return sys_lseek(fd, offset, whence);
}
long sys32_kill(int pid, int sig) long sys32_kill(int pid, int sig)
{ {
return sys_kill(pid, sig); return sys_kill(pid, sig);

View File

@ -43,7 +43,6 @@ asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32);
asmlinkage long sys32_personality(unsigned long); asmlinkage long sys32_personality(unsigned long);
asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32); asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32);
long sys32_lseek(unsigned int, int, unsigned int);
long sys32_kill(int, int); long sys32_kill(int, int);
long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int); long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int);
long sys32_vm86_warning(void); long sys32_vm86_warning(void);

View File

@ -25,7 +25,7 @@
16 i386 lchown sys_lchown16 16 i386 lchown sys_lchown16
17 i386 break 17 i386 break
18 i386 oldstat sys_stat 18 i386 oldstat sys_stat
19 i386 lseek sys_lseek sys32_lseek 19 i386 lseek sys_lseek compat_sys_lseek
20 i386 getpid sys_getpid 20 i386 getpid sys_getpid
21 i386 mount sys_mount compat_sys_mount 21 i386 mount sys_mount compat_sys_mount
22 i386 umount sys_oldumount 22 i386 umount sys_oldumount

View File

@ -15,6 +15,7 @@
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/splice.h> #include <linux/splice.h>
#include <linux/compat.h>
#include "read_write.h" #include "read_write.h"
#include <asm/uaccess.h> #include <asm/uaccess.h>
@ -247,6 +248,13 @@ SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, whence)
return retval; return retval;
} }
#ifdef CONFIG_COMPAT
COMPAT_SYSCALL_DEFINE3(lseek, unsigned int, fd, compat_off_t, offset, unsigned int, whence)
{
return sys_lseek(fd, offset, whence);
}
#endif
#ifdef __ARCH_WANT_SYS_LLSEEK #ifdef __ARCH_WANT_SYS_LLSEEK
SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
unsigned long, offset_low, loff_t __user *, result, unsigned long, offset_low, loff_t __user *, result,
@ -278,7 +286,6 @@ out_putf:
} }
#endif #endif
/* /*
* rw_verify_area doesn't like huge counts. We limit * rw_verify_area doesn't like huge counts. We limit
* them to something that fits in "int" so that others * them to something that fits in "int" so that others

View File

@ -359,6 +359,7 @@ asmlinkage ssize_t compat_sys_preadv(unsigned long fd,
asmlinkage ssize_t compat_sys_pwritev(unsigned long fd, asmlinkage ssize_t compat_sys_pwritev(unsigned long fd,
const struct compat_iovec __user *vec, const struct compat_iovec __user *vec,
unsigned long vlen, u32 pos_low, u32 pos_high); unsigned long vlen, u32 pos_low, u32 pos_high);
asmlinkage long comat_sys_lseek(unsigned int, compat_off_t, unsigned int);
asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv, asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv,
const compat_uptr_t __user *envp); const compat_uptr_t __user *envp);