[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#570350: pid_ns child_reaper fixes for 2.6.26



On 06/29, Ben Hutchings wrote:
>
> On Tue, 2010-06-29 at 17:23 +0200, Oleg Nesterov wrote:
> > > @@ -182,9 +182,12 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
> > >  		rc = sys_wait4(-1, NULL, __WALL, NULL);
> > >  	} while (rc != -ECHILD);
> > >
> > > -
> > > -	/* Child reaper for the pid namespace is going away */
> > > -	pid_ns->child_reaper = NULL;
> > > +	/*
> > > +	 * We can not clear ->child_reaper or leave it alone.
> > > +	 * There may by stealth EXIT_DEAD tasks on ->children,
> > > +	 * forget_original_parent() must move them somewhere.
> > > +	 */
> > > +	pid_ns->child_reaper = init_pid_ns.child_reaper;
> >
> > This is correct, but the second patch
> >
> > > @@ -182,12 +182,6 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
> > >  		rc = sys_wait4(-1, NULL, __WALL, NULL);
> > >  	} while (rc != -ECHILD);
> > >
> > > -	/*
> > > -	 * We can not clear ->child_reaper or leave it alone.
> > > -	 * There may by stealth EXIT_DEAD tasks on ->children,
> > > -	 * forget_original_parent() must move them somewhere.
> > > -	 */
> > > -	pid_ns->child_reaper = init_pid_ns.child_reaper;
> >
> > Removes this code?
>
> That's what your commit 950bbabb5a804690a0201190de5c22837f72f83f did.

This commit moves this "pid_ns->child_reaper = init_pid_ns.child_reaper",
to find_new_reaper(). Like the new patch below does, this is correct.

Probably I misread your previous patch as if it just kills this
assignment.

> > I think you are right, you need these 2 commits
> >
> > 	950bbabb5a804690a0201190de5c22837f72f83f
> > 	add0d4dfd660e9e4fd0af3eac3cad23583c9558f
> >
> > (in that order).
>
> That is the opposite of the order in which they were originally applied!

Indeed, I confused the order ;) Sorry.

> The combined diff is:

Looks correct to me.

Oleg.




Reply to: