···132132 * or the alternate stack.133133 */134134135135-static inline void __user *get_sigframe(struct k_sigaction *ka,135135+static inline void __user *get_sigframe(struct ksignal *ksig,136136 struct pt_regs *regs, size_t frame_size)137137{138138 unsigned long sp = regs->sp;139139- int onsigstack = on_sig_stack(sp);140139141140 /* redzone */142141 sp -= STACK_FRAME_OVERHEAD;143143-144144- /* This is the X/Open sanctioned signal stack switching. */145145- if ((ka->sa.sa_flags & SA_ONSTACK) && !onsigstack) {146146- if (current->sas_ss_size)147147- sp = current->sas_ss_sp + current->sas_ss_size;148148- }149149-142142+ sp = sigsp(sp, ksig);150143 sp = align_sigframe(sp - frame_size);151151-152152- /*153153- * If we are on the alternate signal stack and would overflow it, don't.154154- * Return an always-bogus address instead so we will die with SIGSEGV.155155- */156156- if (onsigstack && !likely(on_sig_stack(sp)))157157- return (void __user *)-1L;158144159145 return (void __user *)sp;160146}···159173 unsigned long return_ip;160174 int err = 0;161175162162- frame = get_sigframe(&ksig->ka, regs, sizeof(*frame));176176+ frame = get_sigframe(ksig, regs, sizeof(*frame));163177164178 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))165179 return -EFAULT;