[PATCH] uml: fix segfault on signal delivery
authorJeff Dike <jdike@addtoit.com>
Mon, 27 Mar 2006 09:14:38 +0000 (01:14 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 27 Mar 2006 16:44:38 +0000 (08:44 -0800)
commit98c18238f146a9038098244d60a7d2b1f67ee790
tree97149aafbc265e63cec55d37a655dabbbf64c232
parent6c29256c5703ad7c3cf62276dbc38d802a05669e
[PATCH] uml: fix segfault on signal delivery

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>
arch/um/sys-i386/signal.c
arch/um/sys-x86_64/signal.c