OSDN Git Service

powerpc/syscalls: Use sys_old_select() in ppc_select()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Wed, 10 Mar 2021 17:57:03 +0000 (17:57 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 26 Mar 2021 12:19:42 +0000 (23:19 +1100)
Instead of opencodying the copy of parameters, use
the generic sys_old_select().

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/4de983ad254739da1fe6e9f273baf387b7043ae0.1615398498.git.christophe.leroy@csgroup.eu
arch/powerpc/include/asm/unistd.h
arch/powerpc/kernel/syscalls.c

index 700fcda..b541c69 100644 (file)
@@ -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
index 078608e..a552c9e 100644 (file)
@@ -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