lkml.org 
[lkml]   [2019]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 131/205] signal: Always ignore SIGKILL and SIGSTOP sent to the global init
    Date
    From: "Eric W. Biederman" <ebiederm@xmission.com>

    [ Upstream commit 86989c41b5ea08776c450cb759592532314a4ed6 ]

    If the first process started (aka /sbin/init) receives a SIGKILL it
    will panic the system if it is delivered. Making the system unusable
    and undebugable. It isn't much better if the first process started
    receives SIGSTOP.

    So always ignore SIGSTOP and SIGKILL sent to init.

    This is done in a separate clause in sig_task_ignored as force_sig_info
    can clear SIG_UNKILLABLE and this protection should work even then.

    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/signal.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/kernel/signal.c b/kernel/signal.c
    index 0e6bc3049427e..7278302e34850 100644
    --- a/kernel/signal.c
    +++ b/kernel/signal.c
    @@ -78,6 +78,10 @@ static bool sig_task_ignored(struct task_struct *t, int sig, bool force)

    handler = sig_handler(t, sig);

    + /* SIGKILL and SIGSTOP may not be sent to the global init */
    + if (unlikely(is_global_init(t) && sig_kernel_only(sig)))
    + return true;
    +
    if (unlikely(t->signal->flags & SIGNAL_UNKILLABLE) &&
    handler == SIG_DFL && !(force && sig_kernel_only(sig)))
    return true;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-08 12:41    [W:4.032 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site