• W
    ARM: 7443/1: Revert "new way of handling ERESTART_RESTARTBLOCK" · 433e2f30
    Will Deacon 提交于
    This reverts commit 6b5c8045.
    
    Conflicts:
    
    	arch/arm/kernel/ptrace.c
    
    The new syscall restarting code can lead to problems if we take an
    interrupt in userspace just before restarting the svc instruction. If
    a signal is delivered when returning from the interrupt, the
    TIF_SYSCALL_RESTARTSYS will remain set and cause any syscalls executed
    from the signal handler to be treated as a restart of the previously
    interrupted system call. This includes the final sigreturn call, meaning
    that we may fail to exit from the signal context. Furthermore, if a
    system call made from the signal handler requires a restart via the
    restart_block, it is possible to clear the thread flag and fail to
    restart the originally interrupted system call.
    
    The right solution to this problem is to perform the restarting in the
    kernel, avoiding the possibility of handling a further signal before the
    restart is complete. Since we're almost at -rc6, let's revert the new
    method for now and aim for in-kernel restarting at a later date.
    Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: NWill Deacon <will.deacon@arm.com>
    Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
    433e2f30
signal.c 18.7 KB