]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc: Increase stack redzone for 64-bit userspace to 512 bytes
authorPaul Mackerras <paulus@samba.org>
Wed, 26 Feb 2014 06:07:38 +0000 (17:07 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 28 Feb 2014 07:06:26 +0000 (18:06 +1100)
commit1db982d5dc65b4e4b397a5020f457b2a1ae3cd47
tree8355a83a1388b1917b4944170809aed74b1f3b10
parent61bc22bf23b1c2834a87dc703b18407082eb24d1
powerpc: Increase stack redzone for 64-bit userspace to 512 bytes

The new ELFv2 little-endian ABI increases the stack redzone -- the
area below the stack pointer that can be used for storing data --
from 288 bytes to 512 bytes.  This means that we need to allow more
space on the user stack when delivering a signal to a 64-bit process.

To make the code a bit clearer, we define new USER_REDZONE_SIZE and
KERNEL_REDZONE_SIZE symbols in ptrace.h.  For now, we leave the
kernel redzone size at 288 bytes, since increasing it to 512 bytes
would increase the size of interrupt stack frames correspondingly.

Gcc currently only makes use of 288 bytes of redzone even when
compiling for the new little-endian ABI, and the kernel cannot
currently be compiled with the new ABI anyway.

In the future, hopefully gcc will provide an option to control the
amount of redzone used, and then we could reduce it even more.

This also changes the code in arch_compat_alloc_user_space() to
preserve the expanded redzone.  It is not clear why this function would
ever be used on a 64-bit process, though.

Signed-off-by: Paul Mackerras <paulus@samba.org>
CC: <stable@vger.kernel.org> [v3.13]
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/compat.h
arch/powerpc/include/asm/ptrace.h
arch/powerpc/kernel/signal_64.c