diff options
Diffstat (limited to 'arch/sparc/kernel/signal_32.c')
| -rw-r--r-- | arch/sparc/kernel/signal_32.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c index 7ce1a1005b1..9882df92ba0 100644 --- a/arch/sparc/kernel/signal_32.c +++ b/arch/sparc/kernel/signal_32.c @@ -267,15 +267,17 @@ static inline void __user *get_sigframe(struct sigaction *sa, struct pt_regs *re  			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 int  |