|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -260,15 +260,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,
|
|
|
|
@ -280,10 +272,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); |
|
|
|
|