switch mips to generic rt_sigsuspend(), make it unconditional
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 25 Nov 2012 06:36:15 +0000 (01:36 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:32:49 +0000 (18:32 -0500)
mips was the last architecture not using the generic variant.
Both native and compat variants switched to generic, which is
made unconditional now.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-o32.S
arch/mips/kernel/signal.c
arch/mips/kernel/signal32.c
arch/mips/kernel/signal_n32.c
kernel/signal.c

index 7388e25984b233c969023ca9bd5ef60dba2ba35a..ab34b32f1e344bb8e535c50266668337de2d99be 100644 (file)
@@ -232,7 +232,7 @@ EXPORT(sysn32_call_table)
        PTR     sys_32_rt_sigpending            /* 6125 */
        PTR     compat_sys_rt_sigtimedwait
        PTR     sys_32_rt_sigqueueinfo
-       PTR     sysn32_rt_sigsuspend
+       PTR     compat_sys_rt_sigsuspend
        PTR     compat_sys_sigaltstack
        PTR     compat_sys_utime                /* 6130 */
        PTR     sys_mknod
index 058a6c1e00a152353af65eeacb98e2da87a717d4..144d904cdb2202e61bc22630f25415d9b7da7899 100644 (file)
@@ -391,7 +391,7 @@ sys_call_table:
        PTR     sys_32_rt_sigpending
        PTR     compat_sys_rt_sigtimedwait
        PTR     sys_32_rt_sigqueueinfo
-       PTR     sys32_rt_sigsuspend
+       PTR     compat_sys_rt_sigsuspend
        PTR     sys_32_pread                    /* 4200 */
        PTR     sys_32_pwrite
        PTR     sys_chown
index eab30865b2bd255829cfc0401f350bbba9e9c3e5..f221722a6d432d09d0ca8b679516a59b2acea048 100644 (file)
@@ -259,19 +259,6 @@ asmlinkage int sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
 }
 #endif
 
-SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *,unewset, size_t, sigsetsize)
-{
-       sigset_t newset;
-
-       /* XXX Don't preclude handling different sized sigset_t's.  */
-       if (sigsetsize != sizeof(sigset_t))
-               return -EINVAL;
-
-       if (copy_from_user(&newset, unewset, sizeof(newset)))
-               return -EFAULT;
-       return sigsuspend(&newset);
-}
-
 #ifdef CONFIG_TRAD_SIGNALS
 SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
        struct sigaction __user *, oact)
index bb3ec6f0863ea910c87f6d1789eeab711b2f60b1..ff6146dddf5f8f35799a16c40224dbc4be83780d 100644 (file)
@@ -284,23 +284,6 @@ asmlinkage int sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
        return sigsuspend(&newset);
 }
 
-asmlinkage int sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
-{
-       compat_sigset_t __user *uset;
-       sigset_t newset;
-       size_t sigsetsize;
-
-       /* XXX Don't preclude handling different sized sigset_t's.  */
-       sigsetsize = regs.regs[5];
-       if (sigsetsize != sizeof(compat_sigset_t))
-               return -EINVAL;
-
-       uset = (compat_sigset_t __user *) regs.regs[4];
-       if (get_sigset(&newset, uset))
-               return -EFAULT;
-       return sigsuspend(&newset);
-}
-
 SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act,
        struct sigaction32 __user *, oact)
 {
index e62e2bc63a81bf6546b04c898ccf568de7f851b7..5f4ef2ae6199bb1a7863909f73e297589c75fde8 100644 (file)
@@ -65,27 +65,6 @@ struct rt_sigframe_n32 {
        struct ucontextn32 rs_uc;
 };
 
-extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat);
-
-asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
-{
-       compat_sigset_t __user *unewset;
-       compat_sigset_t uset;
-       size_t sigsetsize;
-       sigset_t newset;
-
-       /* XXX Don't preclude handling different sized sigset_t's.  */
-       sigsetsize = regs.regs[5];
-       if (sigsetsize != sizeof(sigset_t))
-               return -EINVAL;
-
-       unewset = (compat_sigset_t __user *) regs.regs[4];
-       if (copy_from_user(&uset, unewset, sizeof(uset)))
-               return -EFAULT;
-       sigset_from_compat(&newset, &uset);
-       return sigsuspend(&newset);
-}
-
 asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
 {
        struct rt_sigframe_n32 __user *frame;
index 775f5552fa0ef410eef655e8c857545c595faf74..87c09e3061d20eaf666347daff67c87d1b28bda5 100644 (file)
@@ -3562,7 +3562,6 @@ int sigsuspend(sigset_t *set)
        return -ERESTARTNOHAND;
 }
 
-#ifdef __ARCH_WANT_SYS_RT_SIGSUSPEND
 /**
  *  sys_rt_sigsuspend - replace the signal mask for a value with the
  *     @unewset value until a signal is received
@@ -3603,7 +3602,6 @@ COMPAT_SYSCALL_DEFINE2(rt_sigsuspend, compat_sigset_t __user *, unewset, compat_
 #endif
 }
 #endif
-#endif
 
 #ifdef CONFIG_OLD_SIGSUSPEND
 SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask)