]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
sh: switch to generic old sigaction()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 26 Dec 2012 00:23:55 +0000 (19:23 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:16:16 +0000 (18:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/sh/Kconfig
arch/sh/include/asm/syscalls_32.h
arch/sh/include/uapi/asm/signal.h
arch/sh/kernel/signal_32.c
arch/sh/kernel/signal_64.c

index d69caaf818bb3ec53e6ec267b4af2cd9f20a9b04..b5fd9f3c9925ca7f7ce5d870f4f948f1873f34d6 100644 (file)
@@ -42,6 +42,7 @@ config SUPERH
        select MODULES_USE_ELF_RELA
        select GENERIC_SIGALTSTACK
        select OLD_SIGSUSPEND
+       select OLD_SIGACTION
        help
          The SuperH is a RISC processor targeted for use in embedded systems
          and consumer electronics; it was also used in the Sega Dreamcast
index dc72388e6e5b4895ed3efeb994e8f20ba2fe2180..4f97df87d7d54d970177f97e6d771fa518fb4bab 100644 (file)
@@ -9,8 +9,6 @@
 
 struct pt_regs;
 
-asmlinkage int sys_sigaction(int sig, const struct old_sigaction __user *act,
-                            struct old_sigaction __user *oact);
 asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5,
                             unsigned long r6, unsigned long r7,
                             struct pt_regs __regs);
index 9ac530a90bcef1eeec9c14fa4a914ab0953b2f6c..cb96d02f55a43f4cd2b854f60579a10ccc10447b 100644 (file)
@@ -5,11 +5,13 @@
 
 #include <asm-generic/signal.h>
 
+#ifndef __KERNEL__
 struct old_sigaction {
        __sighandler_t sa_handler;
        old_sigset_t sa_mask;
        unsigned long sa_flags;
        void (*sa_restorer)(void);
 };
+#endif
 
 #endif /* __ASM_SH_SIGNAL_H */
index c660a912a4702cf79fc10d875e2817dc557438c0..6af6e7c5cac8f402db4b834482ac4a7107f8af9d 100644 (file)
@@ -46,38 +46,6 @@ struct fdpic_func_descriptor {
  */
 #define UNWINDGUARD 64
 
-asmlinkage int
-sys_sigaction(int sig, const struct old_sigaction __user *act,
-             struct old_sigaction __user *oact)
-{
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-
-       if (act) {
-               old_sigset_t mask;
-               if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
-                   __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
-                   __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
-                   __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
-                   __get_user(mask, &act->sa_mask))
-                       return -EFAULT;
-               siginitset(&new_ka.sa.sa_mask, mask);
-       }
-
-       ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
-
-       if (!ret && oact) {
-               if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
-                   __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
-                   __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
-                   __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
-                   __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
-                       return -EFAULT;
-       }
-
-       return ret;
-}
-
 /*
  * Do a signal return; undo the signal stack.
  */
index 8705f3ec24f49b19f4c23efd36c5dd1ec1ca97c0..23d4c71c91afb032c341b2c3b41da7220ed2f38b 100644 (file)
@@ -127,38 +127,6 @@ static void do_signal(struct pt_regs *regs)
        restore_saved_sigmask();
 }
 
-asmlinkage int
-sys_sigaction(int sig, const struct old_sigaction __user *act,
-             struct old_sigaction __user *oact)
-{
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-
-       if (act) {
-               old_sigset_t mask;
-               if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
-                   __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
-                   __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) ||
-                   __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
-                   __get_user(mask, &act->sa_mask))
-                       return -EFAULT;
-               siginitset(&new_ka.sa.sa_mask, mask);
-       }
-
-       ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
-
-       if (!ret && oact) {
-               if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
-                   __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
-                   __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) ||
-                   __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
-                   __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
-                       return -EFAULT;
-       }
-
-       return ret;
-}
-
 /*
  * Do a signal return; undo the signal stack.
  */