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

index 09b177bdef66ac8cc5f3700f2c6978ed9ef83fe6..bec7808b7b0f57d1d7757555aa63e58f454e9dcb 100644 (file)
@@ -145,6 +145,7 @@ config PPC
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
        select GENERIC_SIGALTSTACK
+       select GENERIC_COMPAT_RT_SIGACTION
        select GENERIC_COMPAT_RT_SIGQUEUEINFO
        select GENERIC_COMPAT_RT_SIGPROCMASK
        select GENERIC_COMPAT_RT_SIGPENDING
index f6bee3e6f4387a60d558420a2003ca46f49fdbdb..fe92b0d0603ab3b7e09de269fe181b521be4f508 100644 (file)
@@ -25,15 +25,6 @@ struct __old_sigaction32 {
        compat_uptr_t           sa_restorer;     /* not used by Linux/SPARC yet */
 };
 
-
-
-struct sigaction32 {
-       compat_uptr_t  sa_handler;      /* Really a pointer, but need to deal with 32 bits */
-       unsigned int sa_flags;
-       compat_uptr_t sa_restorer;      /* Another 32 bit pointer */
-       compat_sigset_t sa_mask;                /* A 32 bit mask */
-};
-
 struct pt_regs32 {
        unsigned int gpr[32];
        unsigned int nip;
index 488a7c542a3ae7e68ae12599557fb6198eb377ed..16ec1c9899ad910586bba8579c6a7f3dfa55adb2 100644 (file)
@@ -579,36 +579,6 @@ static long restore_user_regs(struct pt_regs *regs,
 }
 
 #ifdef CONFIG_PPC64
-long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
-               struct sigaction32 __user *oact, size_t sigsetsize)
-{
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-
-       /* XXX: Don't preclude handling different sized sigset_t's.  */
-       if (sigsetsize != sizeof(compat_sigset_t))
-               return -EINVAL;
-
-       if (act) {
-               compat_uptr_t handler;
-
-               ret = get_user(handler, &act->sa_handler);
-               new_ka.sa.sa_handler = compat_ptr(handler);
-               ret |= get_sigset_t(&new_ka.sa.sa_mask, &act->sa_mask);
-               ret |= __get_user(new_ka.sa.sa_flags, &act->sa_flags);
-               if (ret)
-                       return -EFAULT;
-       }
-
-       ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
-       if (!ret && oact) {
-               ret = put_user(to_user_ptr(old_ka.sa.sa_handler), &oact->sa_handler);
-               ret |= put_sigset_t(&oact->sa_mask, &old_ka.sa.sa_mask);
-               ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
-       }
-       return ret;
-}
-
 int copy_siginfo_to_user32(struct compat_siginfo __user *d, siginfo_t *s)
 {
        int err;