Re: PATCH? fix unshare(NEWPID) && vfork()

From: Oleg Nesterov
Date: Tue Aug 20 2013 - 14:51:15 EST


On 08/20, Eric W. Biederman wrote:
>
> Oleg Nesterov <oleg@xxxxxxxxxx> writes:
>
> > On 08/19, Andy Lutomirski wrote:
> >>
> >> On Mon, Aug 19, 2013 at 11:33 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
> >> >
> >> > So do you think this change is fine or not (ignoring the fact it needs
> >> > cleanups) ?
> >>
> >> I think that removing the CLONE_VM check is fine (although there are
> >> some other ones that should probably be removed as well), but I'm not
> >> sure if that check needs replacing with something else.
> >
> > OK, thanks... but I still can't understand.
> >
> > The patch I sent is equivalent to the new one below. I just tried to
> > unify it with another check in do_fork().
>
> The patch below also needs CLONE_SIGHAND. You can't meaningfully share
> signal handlers if you can't represent the pid in the siginfo. pids and
> signals are too interconnected.

I don't really understand. If we allow to share ->mm (with this patch),
why it is bad to share sighand_struct->action[] ? This only shares the
pointers to the code which handles a signal.

However I agree it probably makes sense to deny it "just in case",
I do not think CLONE_SIGHAND can be useful in this case.

But then we should also deny CLONE_SIGHAND if CLONE_NEWUSER|CLONE_NEWPID
(another check in do_fork()). Which makes me think again we should unify
these 2 checks.

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/