kernel_optimize_test/arch/arm64
Will Deacon 304ef4e836 arm64: signal: push the unwinding prologue on the signal stack
To allow debuggers to unwind through signal frames, we create a fake
stack unwinding prologue containing the link register and frame pointer
of the interrupted context. The signal frame is then offset by 16 bytes
to make room for the two saved registers which are pushed onto the frame
of the *interrupted* context, rather than placed directly above the
signal stack.

This doesn't work when an alternative signal stack is set up for a SEGV
handler, which is raised in response to RLIMIT_STACK being reached. In
this case, we try to push the unwinding prologue onto the full stack and
subsequently take a fault which we fail to resolve, causing setup_return
to return -EFAULT and handle_signal to force_sigsegv on the current task.

This patch fixes the problem by including the unwinding prologue as part
of the rt_sigframe definition, which is populated during setup_sigframe,
ensuring that it always ends up on the signal stack.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: <stable@vger.kernel.org>
2012-11-23 18:09:19 +00:00
..
boot arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
configs arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
include arm64: Include the clkdev.h generic header 2012-11-23 18:08:12 +00:00
kernel arm64: signal: push the unwinding prologue on the signal stack 2012-11-23 18:09:19 +00:00
lib arm64: Miscellaneous library functions 2012-09-17 13:42:18 +01:00
mm arm64: mm: update max_dma32 before calculating size of NORMAL zone 2012-11-14 09:54:15 +00:00
Kconfig arm64: Force use of common clk at architecture level 2012-11-20 10:04:22 +00:00
Kconfig.debug arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
Makefile arm64: Build infrastructure 2012-09-17 13:42:21 +01:00