]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/parisc/kernel/signal.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
[karo-tx-linux.git] / arch / parisc / kernel / signal.c
index 52c85b2f502e189149865c9bf172f8c3663c1dcf..98e9e7126565816d67e4c2ad48cf1f94106c7f01 100644 (file)
@@ -143,7 +143,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
                        goto give_sigsegv;
                DBG(1,"sys_rt_sigreturn: usp %#08lx stack 0x%p\n", 
                                usp, &compat_frame->uc.uc_stack);
-               if (do_sigaltstack32(&compat_frame->uc.uc_stack, NULL, usp) == -EFAULT)
+               if (compat_restore_altstack(&compat_frame->uc.uc_stack))
                        goto give_sigsegv;
        } else
 #endif
@@ -154,7 +154,7 @@ sys_rt_sigreturn(struct pt_regs *regs, int in_syscall)
                        goto give_sigsegv;
                DBG(1,"sys_rt_sigreturn: usp %#08lx stack 0x%p\n", 
                                usp, &frame->uc.uc_stack);
-               if (do_sigaltstack(&frame->uc.uc_stack, NULL, usp) == -EFAULT)
+               if (restore_altstack(&frame->uc.uc_stack))
                        goto give_sigsegv;
        }
                
@@ -262,15 +262,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        if (is_compat_task()) {
                DBG(1,"setup_rt_frame: frame->info = 0x%p\n", &compat_frame->info);
                err |= copy_siginfo_to_user32(&compat_frame->info, info);
-               DBG(1,"SETUP_RT_FRAME: 1\n");
-               compat_val = (compat_int_t)current->sas_ss_sp;
-               err |= __put_user(compat_val, &compat_frame->uc.uc_stack.ss_sp);
-               DBG(1,"SETUP_RT_FRAME: 2\n");
-               compat_val = (compat_int_t)current->sas_ss_size;
-               err |= __put_user(compat_val, &compat_frame->uc.uc_stack.ss_size);
-               DBG(1,"SETUP_RT_FRAME: 3\n");
-               compat_val = sas_ss_flags(regs->gr[30]);                
-               err |= __put_user(compat_val, &compat_frame->uc.uc_stack.ss_flags);             
+               err |= __compat_save_altstack( &compat_frame->uc.uc_stack, regs->gr[30]);
                DBG(1,"setup_rt_frame: frame->uc = 0x%p\n", &compat_frame->uc);
                DBG(1,"setup_rt_frame: frame->uc.uc_mcontext = 0x%p\n", &compat_frame->uc.uc_mcontext);
                err |= setup_sigcontext32(&compat_frame->uc.uc_mcontext, 
@@ -282,10 +274,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
        {       
                DBG(1,"setup_rt_frame: frame->info = 0x%p\n", &frame->info);
                err |= copy_siginfo_to_user(&frame->info, info);
-               err |= __put_user(current->sas_ss_sp, &frame->uc.uc_stack.ss_sp);
-               err |= __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size);
-               err |= __put_user(sas_ss_flags(regs->gr[30]),
-                                 &frame->uc.uc_stack.ss_flags);
+               err |= __save_altstack(&frame->uc.uc_stack, regs->gr[30]);
                DBG(1,"setup_rt_frame: frame->uc = 0x%p\n", &frame->uc);
                DBG(1,"setup_rt_frame: frame->uc.uc_mcontext = 0x%p\n", &frame->uc.uc_mcontext);
                err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, in_syscall);