]> Pileus Git - ~andy/linux/blobdiff - arch/sparc/kernel/sys_sparc_32.c
Merge tag 'late-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[~andy/linux] / arch / sparc / kernel / sys_sparc_32.c
index 2da0bdcae52f765e0e7e021082064bc99e6e0ace..3a8d1844402e5223a1aa2f941c9f02628fef82d6 100644 (file)
@@ -160,49 +160,19 @@ sparc_breakpoint (struct pt_regs *regs)
 #endif
 }
 
-asmlinkage int
-sparc_sigaction (int sig, const struct old_sigaction __user *act,
-                struct old_sigaction __user *oact)
+SYSCALL_DEFINE3(sparc_sigaction, int, sig,
+               struct old_sigaction __user *,act,
+               struct old_sigaction __user *,oact)
 {
-       struct k_sigaction new_ka, old_ka;
-       int ret;
-
        WARN_ON_ONCE(sig >= 0);
-       sig = -sig;
-
-       if (act) {
-               unsigned long 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);
-               new_ka.ka_restorer = NULL;
-       }
-
-       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;
+       return sys_sigaction(-sig, act, oact);
 }
 
-asmlinkage long
-sys_rt_sigaction(int sig,
-                const struct sigaction __user *act,
-                struct sigaction __user *oact,
-                void __user *restorer,
-                size_t sigsetsize)
+SYSCALL_DEFINE5(rt_sigaction, int, sig,
+                const struct sigaction __user *, act,
+                struct sigaction __user *, oact,
+                void __user *, restorer,
+                size_t, sigsetsize)
 {
        struct k_sigaction new_ka, old_ka;
        int ret;