• Oleg Nesterov's avatar
    signals: don't abuse __flush_signals() in selinux_bprm_committed_creds() · 9e7c8f8c
    Oleg Nesterov authored
    selinux_bprm_committed_creds()->__flush_signals() is not right, we
    shouldn't clear TIF_SIGPENDING unconditionally. There can be other
    reasons for signal_pending(): freezing(), JOBCTL_PENDING_MASK, and
    potentially more.
    
    Also change this code to check fatal_signal_pending() rather than
    SIGNAL_GROUP_EXIT, it looks a bit better.
    
    Now we can kill __flush_signals() before it finds another buggy user.
    
    Note: this code looks racy, we can flush a signal which was sent after
    the task SID has been updated.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Signed-off-by: default avatarPaul Moore <pmoore@redhat.com>
    9e7c8f8c
signal.c 95.1 KB