powerpc: switch to generic compat rt_sigprocmask()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 25 Dec 2012 18:49:43 +0000 (13:49 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:16:08 +0000 (18:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/powerpc/Kconfig
arch/powerpc/kernel/signal_32.c

index dd52babec7d7c5980104cf3b674ef8fcb77eb675..e43cd208dd07b63f5cff6e77070b0fc81f9ed834 100644 (file)
@@ -145,6 +145,7 @@ config PPC
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
        select GENERIC_SIGALTSTACK
+       select GENERIC_COMPAT_RT_SIGPROCMASK
 
 config EARLY_PRINTK
        bool
index 0ea248c893cb832b937d75fa6c2a26f313e05bbe..5d2fadcdfba860996f1dde1a158c2cc873c95b31 100644 (file)
@@ -620,41 +620,6 @@ long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
        return ret;
 }
 
-/*
- * Note: it is necessary to treat how as an unsigned int, with the
- * corresponding cast to a signed int to insure that the proper
- * conversion (sign extension) between the register representation
- * of a signed int (msr in 32-bit mode) and the register representation
- * of a signed int (msr in 64-bit mode) is performed.
- */
-long compat_sys_rt_sigprocmask(u32 how, compat_sigset_t __user *set,
-               compat_sigset_t __user *oset, size_t sigsetsize)
-{
-       sigset_t s;
-       sigset_t __user *up;
-       int ret;
-       mm_segment_t old_fs = get_fs();
-
-       if (set) {
-               if (get_sigset_t(&s, set))
-                       return -EFAULT;
-       }
-
-       set_fs(KERNEL_DS);
-       /* This is valid because of the set_fs() */
-       up = (sigset_t __user *) &s;
-       ret = sys_rt_sigprocmask((int)how, set ? up : NULL, oset ? up : NULL,
-                                sigsetsize);
-       set_fs(old_fs);
-       if (ret)
-               return ret;
-       if (oset) {
-               if (put_sigset_t(oset, &s))
-                       return -EFAULT;
-       }
-       return 0;
-}
-
 long compat_sys_rt_sigpending(compat_sigset_t __user *set, compat_size_t sigsetsize)
 {
        sigset_t s;