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

openrisc: Use sigsp()

Use sigsp() instead of the open coded variant.

Signed-off-by: Richard Weinberger <richard@nod.at>

authored by

Richard Weinberger and committed by
Richard Weinberger
8e2beafa a8040ff8

+3 -17
+3 -17
arch/openrisc/kernel/signal.c
··· 132 132 * or the alternate stack. 133 133 */ 134 134 135 - static inline void __user *get_sigframe(struct k_sigaction *ka, 135 + static inline void __user *get_sigframe(struct ksignal *ksig, 136 136 struct pt_regs *regs, size_t frame_size) 137 137 { 138 138 unsigned long sp = regs->sp; 139 - int onsigstack = on_sig_stack(sp); 140 139 141 140 /* redzone */ 142 141 sp -= STACK_FRAME_OVERHEAD; 143 - 144 - /* This is the X/Open sanctioned signal stack switching. */ 145 - if ((ka->sa.sa_flags & SA_ONSTACK) && !onsigstack) { 146 - if (current->sas_ss_size) 147 - sp = current->sas_ss_sp + current->sas_ss_size; 148 - } 149 - 142 + sp = sigsp(sp, ksig); 150 143 sp = align_sigframe(sp - frame_size); 151 - 152 - /* 153 - * If we are on the alternate signal stack and would overflow it, don't. 154 - * Return an always-bogus address instead so we will die with SIGSEGV. 155 - */ 156 - if (onsigstack && !likely(on_sig_stack(sp))) 157 - return (void __user *)-1L; 158 144 159 145 return (void __user *)sp; 160 146 } ··· 159 173 unsigned long return_ip; 160 174 int err = 0; 161 175 162 - frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); 176 + frame = get_sigframe(ksig, regs, sizeof(*frame)); 163 177 164 178 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 165 179 return -EFAULT;