Messages in this thread | | | Date | Tue, 7 Jun 2022 17:26:54 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 07/16] signal: Wake up the designated parent |
| |
On 06/06, Eric W. Biederman wrote: > > Which if I have had enough sleep reduces this patch to just: > > diff --git a/kernel/exit.c b/kernel/exit.c > index f072959fcab7..c8156366b722 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -1431,8 +1431,10 @@ static int child_wait_callback(wait_queue_entry_t *wait, unsigned mode, > if (!eligible_pid(wo, p)) > return 0; > > - if ((wo->wo_flags & __WNOTHREAD) && wait->private != p->parent) > - return 0; > + if ((wo->wo_flags & __WNOTHREAD) && > + (wait->private != p->parent) && > + (wait->private != p->real_parent)) > + return 0; > > return default_wake_function(wait, mode, sync, key); > } > > > I think that solves the issue without missing wake-ups without adding > any more.
Agreed, and looks much simpler.
> For the same set of reasons it looks like the __wake_up_parent in > __ptrace_detach is just simply dead code. I don't think there is a case > where when !ptrace_reparented the thread that is the real_parent can > sleep in do_wait when the thread that was calling ptrace could not.
Yes... this doesn't really differ from the case when one thread reaps a natural child and another thread sleep in do_wait().
> That needs a very close look to confirm.
Yes.
Oleg.
| |