|
@@ -133,16 +133,6 @@ static void __user *get_sigframe(struct k_sigaction *ka,
|
|
|
return (void __user*)((sp - frame_size) & ~7);
|
|
|
}
|
|
|
|
|
|
-asmlinkage long
|
|
|
-score_sigaltstack(struct pt_regs *regs)
|
|
|
-{
|
|
|
- const stack_t __user *uss = (const stack_t __user *) regs->regs[4];
|
|
|
- stack_t __user *uoss = (stack_t __user *) regs->regs[5];
|
|
|
- unsigned long usp = regs->regs[0];
|
|
|
-
|
|
|
- return do_sigaltstack(uss, uoss, usp);
|
|
|
-}
|
|
|
-
|
|
|
asmlinkage long
|
|
|
score_rt_sigreturn(struct pt_regs *regs)
|
|
|
{
|
|
@@ -167,9 +157,7 @@ score_rt_sigreturn(struct pt_regs *regs)
|
|
|
else if (sig)
|
|
|
force_sig(sig, current);
|
|
|
|
|
|
- /* It is more difficult to avoid calling this function than to
|
|
|
- call it and ignore errors. */
|
|
|
- if (do_sigaltstack(&frame->rs_uc.uc_stack, NULL, regs->regs[0]) == -EFAULT)
|
|
|
+ if (restore_altstack(&frame->rs_uc.uc_stack))
|
|
|
goto badframe;
|
|
|
regs->is_syscall = 0;
|
|
|
|
|
@@ -209,12 +197,7 @@ static int setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs,
|
|
|
err |= copy_siginfo_to_user(&frame->rs_info, info);
|
|
|
err |= __put_user(0, &frame->rs_uc.uc_flags);
|
|
|
err |= __put_user(NULL, &frame->rs_uc.uc_link);
|
|
|
- err |= __put_user((void __user *)current->sas_ss_sp,
|
|
|
- &frame->rs_uc.uc_stack.ss_sp);
|
|
|
- err |= __put_user(sas_ss_flags(regs->regs[0]),
|
|
|
- &frame->rs_uc.uc_stack.ss_flags);
|
|
|
- err |= __put_user(current->sas_ss_size,
|
|
|
- &frame->rs_uc.uc_stack.ss_size);
|
|
|
+ err |= __save_altstack(&frame->rs_uc.uc_stack, regs->regs[0]);
|
|
|
err |= setup_sigcontext(regs, &frame->rs_uc.uc_mcontext);
|
|
|
err |= __copy_to_user(&frame->rs_uc.uc_sigmask, set, sizeof(*set));
|
|
|
|