From 96ee7da26a8d59770dc12b0601040ce34d96b187 Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Sat, 15 Mar 2003 14:26:35 +1100 Subject: [PATCH] ppc64: compat_sys_fcntl from Stephen Rothwell, remove socketcall emulation --- arch/ppc64/kernel/misc.S | 4 +- arch/ppc64/kernel/sys32.S | 284 ---------------------------------- arch/ppc64/kernel/sys_ppc32.c | 33 ---- include/asm-ppc64/compat.h | 16 +- include/asm-ppc64/fcntl.h | 13 +- 5 files changed, 18 insertions(+), 332 deletions(-) diff --git a/arch/ppc64/kernel/misc.S b/arch/ppc64/kernel/misc.S index 3c51203499227..81200e28f16b9 100644 --- a/arch/ppc64/kernel/misc.S +++ b/arch/ppc64/kernel/misc.S @@ -557,7 +557,7 @@ _GLOBAL(sys_call_table32) .llong .sys32_umount .llong .sys_ni_syscall /* old lock syscall */ .llong .sys32_ioctl - .llong .sys32_fcntl /* 55 */ + .llong .compat_sys_fcntl /* 55 */ .llong .sys_ni_syscall /* old mpx syscall */ .llong .sys32_setpgid .llong .sys_ni_syscall /* old ulimit syscall */ @@ -706,7 +706,7 @@ _GLOBAL(sys_call_table32) .llong .sys_ni_syscall /* reserved for MacOnLinux */ .llong .sys_getdents64 .llong .sys_pivot_root - .llong .sys32_fcntl64 + .llong .compat_sys_fcntl64 .llong .sys_madvise /* 205 */ .llong .sys_mincore .llong .sys_gettid diff --git a/arch/ppc64/kernel/sys32.S b/arch/ppc64/kernel/sys32.S index cb924eb538a22..6c7888abb88d4 100644 --- a/arch/ppc64/kernel/sys32.S +++ b/arch/ppc64/kernel/sys32.S @@ -25,287 +25,3 @@ _GLOBAL(ppc32_lseek) extsw r4,r4 /* sign extend off_t offset parm */ b .sys_lseek -_GLOBAL(compat_sys_socketcall) /* r3=call, r4=args */ - cmpwi r3, 1 - blt- .do_einval - cmpwi r3, 17 - bgt- .do_einval - subi r3, r3, 1 /* index into socketcall_table vectors and jmp */ - sldi r3, r3, 3 /* each entry is 8 bytes */ - LOADADDR(r10,.socketcall_table_begin) - ldx r10, r10, r3 - mtctr r10 - bctr - -/* Socket function vectored fix ups for 32 bit */ -_STATIC(do_sys_socket) /* sys_socket(int, int, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) -3: lwa r5,8(r10) - b .sys_socket - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_bind) /* sys_bind(int fd, struct sockaddr *, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwa r5,8(r10) - b .sys_bind - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_connect) /* sys_connect(int, struct sockaddr *, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwa r5,8(r10) - b .sys_connect - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_listen) /* sys_listen(int, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) - b .sys_listen - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .previous - -_STATIC(do_sys_accept) /* sys_accept(int, struct sockaddr *, int *) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) - b .sys_accept - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_getsockname) /* sys_getsockname(int, struct sockaddr *, int *) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) - b .sys_getsockname - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_getpeername) /* sys_getpeername(int, struct sockaddr *, int *) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) - b .sys_getpeername - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_socketpair) /* sys_socketpair(int, int, int, int *) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) -3: lwa r5,8(r10) -4: lwz r6,12(r10) - b .sys_socketpair - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .previous - -_STATIC(do_sys_send) /* sys_send(int, void *, size_t, unsigned int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) -4: lwz r6,12(r10) - b .sys_send - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .previous - -_STATIC(do_sys_recv) /* sys_recv(int, void *, size_t, unsigned int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) -4: lwz r6,12(r10) - b .sys_recv - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .previous - -_STATIC(do_sys_sendto) /* sys32_sendto(int, u32, compat_size_t, unsigned int, u32, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) -4: lwz r6,12(r10) -5: lwz r7,16(r10) -6: lwz r8,20(r10) - b .sys_sendto - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .llong 5b,.do_efault - .llong 6b,.do_efault - .previous - -_STATIC(do_sys_recvfrom) /* sys32_recvfrom(int, u32, compat_size_t, unsigned int, u32, u32) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwz r5,8(r10) -4: lwz r6,12(r10) -5: lwz r7,16(r10) -6: lwz r8,20(r10) - b .sys_recvfrom - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .llong 5b,.do_efault - .llong 6b,.do_efault - .previous - -_STATIC(do_sys_shutdown) /* sys_shutdown(int, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) - b .sys_shutdown - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .previous - -_STATIC(do_sys_setsockopt) /* compat_sys_setsockopt(int, int, int, char *, int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) -3: lwa r5,8(r10) -4: lwz r6,12(r10) -5: lwa r7,16(r10) - b .compat_sys_setsockopt - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .llong 5b,.do_efault - .previous - -_STATIC(do_sys_getsockopt) /* compat_sys_getsockopt(int, int, int, u32, u32) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwa r4,4(r10) -3: lwa r5,8(r10) -4: lwz r6,12(r10) -5: lwz r7,16(r10) - b .compat_sys_getsockopt - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .llong 4b,.do_efault - .llong 5b,.do_efault - .previous - -_STATIC(do_sys_sendmsg) /* compat_sys_sendmsg(int, struct compat_msghdr *, unsigned int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwa r5,8(r10) - b .compat_sys_sendmsg - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_sys_recvmsg) /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) */ - mr r10,r4 -1: lwa r3,0(r10) -2: lwz r4,4(r10) -3: lwa r5,8(r10) - b .compat_sys_recvmsg - .section __ex_table,"a" - .align 3 - .llong 1b,.do_efault - .llong 2b,.do_efault - .llong 3b,.do_efault - .previous - -_STATIC(do_einval) - li r3,-EINVAL - blr - -_STATIC(do_efault) - li r3,-EFAULT - blr - - .balign 8 -_GLOBAL(socketcall_table_begin) - .llong .do_sys_socket - .llong .do_sys_bind - .llong .do_sys_connect - .llong .do_sys_listen - .llong .do_sys_accept - .llong .do_sys_getsockname - .llong .do_sys_getpeername - .llong .do_sys_socketpair - .llong .do_sys_send - .llong .do_sys_recv - .llong .do_sys_sendto - .llong .do_sys_recvfrom - .llong .do_sys_shutdown - .llong .do_sys_setsockopt - .llong .do_sys_getsockopt - .llong .do_sys_sendmsg - .llong .do_sys_recvmsg -_GLOBAL(socketcall_table_end) diff --git a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c index 1954d4ba14264..36970e3b4fb5b 100644 --- a/arch/ppc64/kernel/sys_ppc32.c +++ b/arch/ppc64/kernel/sys_ppc32.c @@ -246,32 +246,6 @@ out: return ret; } -extern asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg); -asmlinkage long sys32_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg) -{ - switch (cmd) { - case F_GETLK: - case F_SETLK: - case F_SETLKW: - { - struct flock f; - mm_segment_t old_fs; - long ret; - - if(get_compat_flock(&f, (struct compat_flock *)arg)) - return -EFAULT; - old_fs = get_fs(); set_fs (KERNEL_DS); - ret = sys_fcntl(fd, cmd, (unsigned long)&f); - set_fs (old_fs); - if(put_compat_flock(&f, (struct compat_flock *)arg)) - return -EFAULT; - return ret; - } - default: - return sys_fcntl(fd, cmd, (unsigned long)arg); - } -} - struct ncp_mount_data32_v3 { int version; unsigned int ncp_fd; @@ -2848,13 +2822,6 @@ asmlinkage long sys32_umount(char * name, u32 flags) return sys_umount(name, (int)flags); } -asmlinkage long sys32_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg) -{ - if (cmd >= F_GETLK64 && cmd <= F_SETLKW64) - return sys_fcntl(fd, cmd + F_GETLK - F_GETLK64, arg); - return sys32_fcntl(fd, cmd, arg); -} - struct __sysctl_args32 { u32 name; int nlen; diff --git a/include/asm-ppc64/compat.h b/include/asm-ppc64/compat.h index 4385fb4494c5f..75cb531ca3e3e 100644 --- a/include/asm-ppc64/compat.h +++ b/include/asm-ppc64/compat.h @@ -61,7 +61,18 @@ struct compat_flock { compat_off_t l_start; compat_off_t l_len; compat_pid_t l_pid; - short __unused; +}; + +#define F_GETLK64 12 /* using 'struct flock64' */ +#define F_SETLK64 13 +#define F_SETLKW64 14 + +struct compat_flock64 { + short l_type; + short l_whence; + compat_loff_t l_start; + compat_loff_t l_len; + compat_pid_t l_pid; }; struct compat_statfs { @@ -84,4 +95,7 @@ typedef u32 compat_old_sigset_t; typedef u32 compat_sigset_word; +#define COMPAT_OFF_T_MAX 0x7fffffff +#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL + #endif /* _ASM_PPC64_COMPAT_H */ diff --git a/include/asm-ppc64/fcntl.h b/include/asm-ppc64/fcntl.h index 19ba4d6dc63ce..1ef83570b4e4d 100644 --- a/include/asm-ppc64/fcntl.h +++ b/include/asm-ppc64/fcntl.h @@ -42,10 +42,6 @@ #define F_SETSIG 10 /* for sockets. */ #define F_GETSIG 11 /* for sockets. */ -#define F_GETLK64 12 /* using 'struct flock64' */ -#define F_SETLK64 13 -#define F_SETLKW64 14 - /* for F_[GET|SET]FL */ #define FD_CLOEXEC 1 /* actually anything with low bit set goes */ @@ -87,13 +83,6 @@ struct flock { pid_t l_pid; }; -struct flock64 { - short l_type; - short l_whence; - loff_t l_start; - loff_t l_len; - pid_t l_pid; -}; - #define F_LINUX_SPECIFIC_BASE 1024 + #endif /* _PPC64_FCNTL_H */ -- 2.53.0