mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 09:16:33 +00:00
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(17, sys_ni_syscall) /* 17 was sys_break */
|
||||
__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(21, compat_sys_mount)
|
||||
__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
|
||||
* extension.
|
||||
*/
|
||||
compat_sys_lseek_wrapper:
|
||||
sxtw x1, w1
|
||||
b sys_lseek
|
||||
ENDPROC(compat_sys_lseek_wrapper)
|
||||
|
||||
compat_sys_pread64_wrapper:
|
||||
orr x3, x4, x5, lsl #32
|
||||
b sys_pread64
|
||||
|
@ -79,16 +79,6 @@ asmlinkage long sys32_sendfile64(u32 out_fd, u32 in_fd,
|
||||
(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)
|
||||
{
|
||||
union semun u;
|
||||
|
@ -76,7 +76,7 @@
|
||||
ENTRY_SAME(socket)
|
||||
/* struct stat is MAYBE identical wide and narrow ?? */
|
||||
ENTRY_COMP(newstat)
|
||||
ENTRY_DIFF(lseek)
|
||||
ENTRY_COMP(lseek)
|
||||
ENTRY_SAME(getpid) /* 20 */
|
||||
/* the 'void * data' parameter may need re-packing in wide */
|
||||
ENTRY_COMP(mount)
|
||||
|
@ -22,7 +22,7 @@ SYSCALL_SPU(chmod)
|
||||
SYSCALL_SPU(lchown)
|
||||
SYSCALL(ni_syscall)
|
||||
OLDSYS(stat)
|
||||
SYSX_SPU(sys_lseek,ppc32_lseek,sys_lseek)
|
||||
COMPAT_SYS_SPU(lseek)
|
||||
SYSCALL_SPU(getpid)
|
||||
COMPAT_SYS(mount)
|
||||
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 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)
|
||||
{
|
||||
/* sign extend length */
|
||||
|
@ -67,12 +67,6 @@ ENTRY(sys32_lchown16_wrapper)
|
||||
llgfr %r4,%r4 # __kernel_old_uid_emu31_t
|
||||
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
|
||||
|
||||
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*/
|
||||
NI_SYSCALL /* old break 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_mount,sys_mount,sys32_mount_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)
|
||||
SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5)
|
||||
SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1)
|
||||
SIGN1(sys32_lseek, sys_lseek, %o1)
|
||||
SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0)
|
||||
SIGN1(sys32_recvmsg, compat_sys_recvmsg, %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
|
||||
/*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
|
||||
/*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
|
||||
/*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
|
||||
|
@ -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
|
||||
* 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)
|
||||
{
|
||||
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_sendfile(int, int, compat_off_t __user *, s32);
|
||||
|
||||
long sys32_lseek(unsigned int, int, unsigned int);
|
||||
long sys32_kill(int, int);
|
||||
long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int);
|
||||
long sys32_vm86_warning(void);
|
||||
|
@ -25,7 +25,7 @@
|
||||
16 i386 lchown sys_lchown16
|
||||
17 i386 break
|
||||
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
|
||||
21 i386 mount sys_mount compat_sys_mount
|
||||
22 i386 umount sys_oldumount
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/splice.h>
|
||||
#include <linux/compat.h>
|
||||
#include "read_write.h"
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
@ -247,6 +248,13 @@ SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, whence)
|
||||
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
|
||||
SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
|
||||
unsigned long, offset_low, loff_t __user *, result,
|
||||
@ -278,7 +286,6 @@ SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* rw_verify_area doesn't like huge counts. We limit
|
||||
* 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,
|
||||
const struct compat_iovec __user *vec,
|
||||
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,
|
||||
const compat_uptr_t __user *envp);
|
||||
|
Loading…
Reference in New Issue
Block a user