]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
powerpc: Sanitize stack pointer in signal handling code
authorJosh Boyer <jwboyer@linux.vnet.ibm.com>
Tue, 28 Apr 2009 15:14:01 +0000 (11:14 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 2 May 2009 17:57:17 +0000 (10:57 -0700)
commit898c2fdf1de930606bbcafc30649d6d8ff4e2e9a
tree8a752bbe57aa664dddd792db08e7ad153c4d5a5c
parentef2ef1cee9f63c060204c258b62f9a321b1887f5
powerpc: Sanitize stack pointer in signal handling code

This has been backported to 2.6.28.x from commit efbda86098 in Linus' tree

On powerpc64 machines running 32-bit userspace, we can get garbage bits in the
stack pointer passed into the kernel.  Most places handle this correctly, but
the signal handling code uses the passed value directly for allocating signal
stack frames.

This fixes the issue by introducing a get_clean_sp function that returns a
sanitized stack pointer.  For 32-bit tasks on a 64-bit kernel, the stack
pointer is masked correctly.  In all other cases, the stack pointer is simply
returned.

Additionally, we pass an 'is_32' parameter to get_sigframe now in order to
get the properly sanitized stack.  The callers are know to be 32 or 64-bit
statically.

Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/powerpc/include/asm/processor.h
arch/powerpc/kernel/signal.c
arch/powerpc/kernel/signal.h
arch/powerpc/kernel/signal_32.c
arch/powerpc/kernel/signal_64.c