98c18238f1
This fixes a process segfault where a signal was being delivered such that a new stack page needed to be allocated to hold the signal frame. This was tripping some logic in the page fault handler which wouldn't allocate the page if the faulting address was more that 32 bytes lower than the current stack pointer. Since a signal frame is greater than 32 bytes, this exercised that case. It's fixed by updating the SP in the pt_regs before starting to copy the signal frame. Since those are the registers that will be copied on to the stack, we have to be careful to put the original SP, not the new one which points to the signal frame, on the stack. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org> |
||
---|---|---|
.. | ||
bugs.c | ||
checksum.S | ||
delay.c | ||
fault.c | ||
ksyms.c | ||
ldt.c | ||
Makefile | ||
ptrace.c | ||
ptrace_user.c | ||
sigcontext.c | ||
signal.c | ||
stub.S | ||
stub_segv.c | ||
sys_call_table.S | ||
syscalls.c | ||
sysrq.c | ||
unmap.c | ||
user-offsets.c |