Instead of opencodying the copy of parameters, use
the generic sys_old_select().

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/include/asm/unistd.h |  1 +
 arch/powerpc/kernel/syscalls.c    | 12 ++----------
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/include/asm/unistd.h 
b/arch/powerpc/include/asm/unistd.h
index 700fcdac2e3c..b541c690a31c 100644
--- a/arch/powerpc/include/asm/unistd.h
+++ b/arch/powerpc/include/asm/unistd.h
@@ -40,6 +40,7 @@
 #define __ARCH_WANT_SYS_SIGPROCMASK
 #ifdef CONFIG_PPC32
 #define __ARCH_WANT_OLD_STAT
+#define __ARCH_WANT_SYS_OLD_SELECT
 #endif
 #ifdef CONFIG_PPC64
 #define __ARCH_WANT_SYS_TIME
diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
index 078608ec2e92..a552c9e68d7e 100644
--- a/arch/powerpc/kernel/syscalls.c
+++ b/arch/powerpc/kernel/syscalls.c
@@ -82,16 +82,8 @@ int
 ppc_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, 
struct __kernel_old_timeval __user *tvp)
 {
        if ( (unsigned long)n >= 4096 )
-       {
-               unsigned long __user *buffer = (unsigned long __user *)n;
-               if (!access_ok(buffer, 5*sizeof(unsigned long))
-                   || __get_user(n, buffer)
-                   || __get_user(inp, ((fd_set __user * __user *)(buffer+1)))
-                   || __get_user(outp, ((fd_set  __user * __user *)(buffer+2)))
-                   || __get_user(exp, ((fd_set  __user * __user *)(buffer+3)))
-                   || __get_user(tvp, ((struct __kernel_old_timeval  __user * 
__user *)(buffer+4))))
-                       return -EFAULT;
-       }
+               return sys_old_select((void __user *)n);
+
        return sys_select(n, inp, outp, exp, tvp);
 }
 #endif
-- 
2.25.0

Reply via email to