summaryrefslogtreecommitdiff
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2022-02-21 11:33:57 +0100
committerThomas Gleixner <tglx@linutronix.de>2022-02-21 11:33:57 +0100
commitd2206fcabdfaff3958ab67cc5b8f63257e57b889 (patch)
treef6bc697bb2d10e49e5123b4e0cc30c11aafc3120 /kernel/signal.c
parentfe13889c390e14205e064d7e159e61eb5da4b1c3 (diff)
parent509853f9e1e7b1490dc79f735a5dbafc9298f40d (diff)
downloadlinux-d2206fcabdfaff3958ab67cc5b8f63257e57b889.tar.gz
linux-d2206fcabdfaff3958ab67cc5b8f63257e57b889.tar.bz2
linux-d2206fcabdfaff3958ab67cc5b8f63257e57b889.zip
Merge tag 'irq-api-2022-02-21' into irq/core
Merge the generic_handle_irq_safe() API back into irq/core.
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index 38602738866e..9b04631acde8 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1342,9 +1342,10 @@ force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t,
}
/*
* Don't clear SIGNAL_UNKILLABLE for traced tasks, users won't expect
- * debugging to leave init killable.
+ * debugging to leave init killable. But HANDLER_EXIT is always fatal.
*/
- if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
+ if (action->sa.sa_handler == SIG_DFL &&
+ (!t->ptrace || (handler == HANDLER_EXIT)))
t->signal->flags &= ~SIGNAL_UNKILLABLE;
ret = send_signal(sig, info, t, PIDTYPE_PID);
spin_unlock_irqrestore(&t->sighand->siglock, flags);