• Oleg Nesterov's avatar
    ptrace: simplify ptrace_stop()->sigkill_pending() path · 3d749b9e
    Oleg Nesterov authored
    1. SIGKILL can't be blocked, remove this check from sigkill_pending().
    
    2. When ptrace_stop() sees sigkill_pending() == T, it can just return.
       Kill "int killed" and simplify the code. This also is more correct,
       the tracer shouldn't see us in TASK_TRACED if we are not going to
       stop.
    
    I strongly believe this code needs further changes.  We should do the "was
    this task killed" check unconditionally, currently it depends on
    arch_ptrace_stop_needed().  On the other hand, sigkill_pending() isn't
    very clever.  If the task was killed tkill(SIGKILL), the signal can be
    already dequeued if the caller is do_exit().
    Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
    Cc: Roland McGrath <roland@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3d749b9e
signal.c 63.7 KB