Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

score: switch to generic sigaltstack

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro b774cc5c 0aa0203f

+3 -25
+1
arch/score/Kconfig
··· 14 14 select HAVE_MOD_ARCH_SPECIFIC 15 15 select MODULES_USE_ELF_REL 16 16 select CLONE_BACKWARDS 17 + select GENERIC_SIGALTSTACK 17 18 18 19 choice 19 20 prompt "System type"
-1
arch/score/include/asm/syscalls.h
··· 1 1 #ifndef _ASM_SCORE_SYSCALLS_H 2 2 #define _ASM_SCORE_SYSCALLS_H 3 3 4 - asmlinkage long score_sigaltstack(struct pt_regs *regs); 5 4 asmlinkage long score_rt_sigreturn(struct pt_regs *regs); 6 5 7 6 #include <asm-generic/syscalls.h>
-5
arch/score/kernel/entry.S
··· 491 491 mv r4, r0 492 492 la r8, score_rt_sigreturn 493 493 br r8 494 - 495 - ENTRY(sys_sigaltstack) 496 - mv r4, r0 497 - la r8, score_sigaltstack 498 - br r8
+2 -19
arch/score/kernel/signal.c
··· 134 134 } 135 135 136 136 asmlinkage long 137 - score_sigaltstack(struct pt_regs *regs) 138 - { 139 - const stack_t __user *uss = (const stack_t __user *) regs->regs[4]; 140 - stack_t __user *uoss = (stack_t __user *) regs->regs[5]; 141 - unsigned long usp = regs->regs[0]; 142 - 143 - return do_sigaltstack(uss, uoss, usp); 144 - } 145 - 146 - asmlinkage long 147 137 score_rt_sigreturn(struct pt_regs *regs) 148 138 { 149 139 struct rt_sigframe __user *frame; ··· 157 167 else if (sig) 158 168 force_sig(sig, current); 159 169 160 - /* It is more difficult to avoid calling this function than to 161 - call it and ignore errors. */ 162 - if (do_sigaltstack(&frame->rs_uc.uc_stack, NULL, regs->regs[0]) == -EFAULT) 170 + if (restore_altstack(&frame->rs_uc.uc_stack)) 163 171 goto badframe; 164 172 regs->is_syscall = 0; 165 173 ··· 197 209 err |= copy_siginfo_to_user(&frame->rs_info, info); 198 210 err |= __put_user(0, &frame->rs_uc.uc_flags); 199 211 err |= __put_user(NULL, &frame->rs_uc.uc_link); 200 - err |= __put_user((void __user *)current->sas_ss_sp, 201 - &frame->rs_uc.uc_stack.ss_sp); 202 - err |= __put_user(sas_ss_flags(regs->regs[0]), 203 - &frame->rs_uc.uc_stack.ss_flags); 204 - err |= __put_user(current->sas_ss_size, 205 - &frame->rs_uc.uc_stack.ss_size); 212 + err |= __save_altstack(&frame->rs_uc.uc_stack, regs->regs[0]); 206 213 err |= setup_sigcontext(regs, &frame->rs_uc.uc_mcontext); 207 214 err |= __copy_to_user(&frame->rs_uc.uc_sigmask, set, sizeof(*set)); 208 215