diff options
Diffstat (limited to 'arch/sparc/kernel/signal_64.c')
| -rw-r--r-- | arch/sparc/kernel/signal_64.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index 647afbda7ae..9fa48c30037 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c @@ -353,7 +353,7 @@ segv:  /* Checks if the fp is valid */  static int invalid_frame_pointer(void __user *fp, int fplen)  { -	if (((unsigned long) fp) & 7) +	if (((unsigned long) fp) & 15)  		return 1;  	return 0;  } @@ -396,15 +396,17 @@ static inline void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *  			sp = current->sas_ss_sp + current->sas_ss_size;  	} +	sp -= framesize; +  	/* Always align the stack frame.  This handles two cases.  First,  	 * sigaltstack need not be mindful of platform specific stack  	 * alignment.  Second, if we took this signal because the stack  	 * is not aligned properly, we'd like to take the signal cleanly  	 * and report that.  	 */ -	sp &= ~7UL; +	sp &= ~15UL; -	return (void __user *)(sp - framesize); +	return (void __user *) sp;  }  static inline void  |