|
@@ -1194,7 +1194,11 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
|
|
recalc_sigpending_and_wake(t);
|
|
recalc_sigpending_and_wake(t);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (action->sa.sa_handler == SIG_DFL)
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Don't clear SIGNAL_UNKILLABLE for traced tasks, users won't expect
|
|
|
|
+ * debugging to leave init killable.
|
|
|
|
+ */
|
|
|
|
+ if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
|
|
t->signal->flags &= ~SIGNAL_UNKILLABLE;
|
|
t->signal->flags &= ~SIGNAL_UNKILLABLE;
|
|
ret = specific_send_sig_info(sig, info, t);
|
|
ret = specific_send_sig_info(sig, info, t);
|
|
spin_unlock_irqrestore(&t->sighand->siglock, flags);
|
|
spin_unlock_irqrestore(&t->sighand->siglock, flags);
|