diff --git a/kernel/signal.c b/kernel/signal.c index edc28afc9fb4be5f1a088e2d25aefa3059898c05..fa673ce456b9270852913e1b115e74ce1f69c468 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2390,6 +2390,11 @@ bool get_signal(struct ksignal *ksig) goto relock; } + /* Has this task already been marked for death? */ + ksig->info.si_signo = signr = SIGKILL; + if (signal_group_exit(signal)) + goto fatal; + for (;;) { struct k_sigaction *ka; @@ -2485,6 +2490,7 @@ bool get_signal(struct ksignal *ksig) continue; } + fatal: spin_unlock_irq(&sighand->siglock); /*