• Jeff Dike's avatar
    [PATCH] uml: fix segfault on signal delivery · 98c18238
    Jeff Dike authored
    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: default avatarJeff Dike <jdike@addtoit.com>
    Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    98c18238
signal.c 11.5 KB