forked from Minki/linux
switch lseek to COMPAT_SYSCALL_DEFINE
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
aee41fe2b2
commit
561c673197
@ -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 */
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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 */
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user