diff options
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 7e33f8c583e6..ed804a470dcd 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -1194,7 +1194,11 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) | |||
1194 | recalc_sigpending_and_wake(t); | 1194 | recalc_sigpending_and_wake(t); |
1195 | } | 1195 | } |
1196 | } | 1196 | } |
1197 | if (action->sa.sa_handler == SIG_DFL) | 1197 | /* |
1198 | * Don't clear SIGNAL_UNKILLABLE for traced tasks, users won't expect | ||
1199 | * debugging to leave init killable. | ||
1200 | */ | ||
1201 | if (action->sa.sa_handler == SIG_DFL && !t->ptrace) | ||
1198 | t->signal->flags &= ~SIGNAL_UNKILLABLE; | 1202 | t->signal->flags &= ~SIGNAL_UNKILLABLE; |
1199 | ret = specific_send_sig_info(sig, info, t); | 1203 | ret = specific_send_sig_info(sig, info, t); |
1200 | spin_unlock_irqrestore(&t->sighand->siglock, flags); | 1204 | spin_unlock_irqrestore(&t->sighand->siglock, flags); |