Messages in this thread | | | Date | Mon, 11 Feb 2019 15:13:40 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH 1/2] signal: Always notice exiting tasks |
| |
sorry again for delay...
On 02/07, Eric W. Biederman wrote: > > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -2393,6 +2393,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; > > @@ -2488,6 +2493,7 @@ bool get_signal(struct ksignal *ksig) > continue; > } > > + fatal: > spin_unlock_irq(&sighand->siglock);
Eric, but this is wrong. At least this is the serious user-visible change.
Afaics, with this patch the tracee will never stop in PTRACE_EVENT_EXIT in case of group_exit/exec, because schedule() in TASK_TRACED state won't block due to __fatal_signal_pending().
Yes, yes, as I said many times the semantics of PTRACE_EVENT_EXIT was never really defined, it depends on /dev/random, but still I don't think we should break it even more.
Oleg.
| |