mn10300: switch to generic sigaltstack
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 23 Dec 2012 08:17:06 +0000 (03:17 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:16:03 +0000 (18:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/mn10300/Kconfig
arch/mn10300/kernel/signal.c

index e70001cfa05b1ee650b132f9163e72766f2fbb5c..cb50220296060394cabefc259d91534a944a69a4 100644 (file)
@@ -10,6 +10,7 @@ config MN10300
        select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
        select GENERIC_CLOCKEVENTS
        select MODULES_USE_ELF_RELA
+       select GENERIC_SIGALTSTACK
 
 config AM33_2
        def_bool n
index f570b3085ef90004d2150eca7f86107ea232cf1e..8223eb371e65d7a63ee27344ec45f902e6bf008f 100644 (file)
@@ -76,14 +76,6 @@ asmlinkage long sys_sigaction(int sig,
        return ret;
 }
 
-/*
- * set alternate signal stack syscall
- */
-asmlinkage long sys_sigaltstack(const stack_t __user *uss, stack_t *uoss)
-{
-       return do_sigaltstack(uss, uoss, current_frame()->sp);
-}
-
 /*
  * do a signal return; undo the signal stack.
  */
@@ -193,8 +185,7 @@ asmlinkage long sys_rt_sigreturn(void)
        if (restore_sigcontext(current_frame(), &frame->uc.uc_mcontext, &d0))
                goto badframe;
 
-       if (do_sigaltstack(&frame->uc.uc_stack, NULL, current_frame()->sp) ==
-           -EFAULT)
+       if (restore_altstack(&frame->uc.uc_stack))
                goto badframe;
 
        return d0;
@@ -359,9 +350,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        /* create the ucontext.  */
        if (__put_user(0, &frame->uc.uc_flags) ||
            __put_user(0, &frame->uc.uc_link) ||
-           __put_user((void *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) ||
-           __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags) ||
-           __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size) ||
+           __save_altstack(&frame->uc.uc_stack, regs->sp) ||
            setup_sigcontext(&frame->uc.uc_mcontext,
                             &frame->fpuctx, regs, set->sig[0]) ||
            __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)))