Re: [PATCH 3/3] fork: unify and tighten upCLONE_NEWUSER/CLONE_NEWPID checks

From: Oleg Nesterov
Date: Fri Aug 23 2013 - 10:42:33 EST


On 08/22, Andy Lutomirski wrote:
>
> On Thu, Aug 22, 2013 at 11:32 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
> > On 08/22, Andy Lutomirski wrote:
> >>
> >> On Thu, Aug 22, 2013 at 11:15 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
> >> >
> >> > Yes. Before this patch do_fork() did:
> >> >
> >> > if (clone_flags & (CLONE_NEWUSER | CLONE_NEWPID)) {
> >> > if (clone_flags & (CLONE_THREAD|CLONE_PARENT))
> >> > return -EINVAL;
> >> > }
> >> >
> >> > however, let me repeat, CLONE_PARENT after unshare(CLONE_NEWPID) was
> >> > allowed. With this patch CLONE_PARENT is nacked in both cases.
> >>
> >> Is this -stable-worthy?
> >
> > Honestly, I do not know. I do not want to abuse -stable, and I will
> > sleep better if this patch won't go into the stable trees ;)
> >
> > OTOH, I think that at least 1/3 is probably -stable material... Since
> > I am going to send v2, I would not mind to add stable@xxxxxxxxxxxxxxx
> > if both you and Eric agree.
>
> This may allow creation of a process with tgid and pid in different
> pid namespaces. If so, I have no idea what the consequences would be.

and share the parent with the creator.

Not good. But probably not too bad, one can abuse ->pidns_install()
anyway, create a child in another ns, exit. Like it or not but pid_ns
is "special" and you even sent the patch to reflect this sad^W fact.

Anyway. The main point of this patch is the consistency (plus imho it
cleanups/simplifies the code). Both CLONE_NEWPID and
"task_active_pid_ns() != pid_ns" create a task in another namespace,
we should use the same restrictions.

And you seem to agree with this change, can I take it as your ack ?
I am going to preserve your acks in 1-2 and resend.

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/