hexagon: switch to generic sigaltstack
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 23 Dec 2012 07:43:08 +0000 (02:43 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:15:57 +0000 (18:15 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/hexagon/Kconfig
arch/hexagon/kernel/signal.c

index 0744f7d7b1fd096b5ccbc71cab7305ea997fb3c3..3e6e27c11f930069086b6e481649d99b0844987f 100644 (file)
@@ -31,6 +31,7 @@ config HEXAGON
        select GENERIC_CLOCKEVENTS
        select GENERIC_CLOCKEVENTS_BROADCAST
        select MODULES_USE_ELF_RELA
+       select GENERIC_SIGALTSTACK
        ---help---
          Qualcomm Hexagon is a processor architecture designed for high
          performance and low power across a wide variety of applications.
index fe0d1373165d403e1c983626145fcf23c292cf5e..46ebd4794663c05e8061eea1571eda055f104366 100644 (file)
@@ -247,12 +247,6 @@ void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags)
 /*
  * Architecture-specific wrappers for signal-related system calls
  */
-asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss)
-{
-       struct pt_regs *regs = current_pt_regs();
-
-       return do_sigaltstack(uss, uoss, regs->r29);
-}
 
 asmlinkage int sys_rt_sigreturn(void)
 {
@@ -288,14 +282,7 @@ asmlinkage int sys_rt_sigreturn(void)
         */
        regs->syscall_nr = __NR_rt_sigreturn;
 
-       /*
-        * If we were meticulous, we'd only call this if we knew that
-        * we were actually going to use an alternate stack, and we'd
-        * consider any error to be fatal.  What we do here, in common
-        * with many other architectures, is call it blindly and only
-        * consider the -EFAULT return case to be proof of a problem.
-        */
-       if (do_sigaltstack(&frame->uc.uc_stack, NULL, pt_psp(regs)) == -EFAULT)
+       if (restore_altstack(&frame->uc.uc_stack))
                goto badframe;
 
        return 0;