• Chris Metcalf's avatar
    arch/tile: correct double syscall restart for nested signals · 34a89d26
    Chris Metcalf authored
    This change is modelled on similar fixes for other architectures.
    The pt_regs "faultnum" member is set to the trap (fault) number that
    caused us to enter the kernel, and is INT_SWINT_1 for the syscall software
    interrupt.  We already supported a pseudo value, INT_SWINT_1_SIGRETURN,
    that we used for the rt_sigreturn syscall; it avoided the case where
    one signal was handled, then we "tail-called" to another handler.
    
    This change avoids the similar case where we start to call one handler,
    then are preempted into another handler when we start trying to run
    the first handler.  We clear ->faultnum after calling handle_signal(),
    and to be paranoid also in the case where there was no signal to deliver.
    Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
    34a89d26
signal.c 9.72 KB