[RFC][PATCH] Deny CLONE_PARENT|CLONE_NEWPID|CLONE_SIGHAND combination

Sukadev Bhattiprolu sukadev at linux.vnet.ibm.com
Sat Jul 11 12:39:44 PDT 2009


Oleg Nesterov [oleg at redhat.com] wrote:
| On 07/01, Sukadev Bhattiprolu wrote:
| >
| > Deny CLONE_PARENT|CLONE_NEWPID|CLONE_SIGHAND combination.
| >
| > CLONE_PARENT was used to implement an older threading model.  For consistency
| > with the CLONE_THREAD check in copy_pid_ns(), disable CLONE_PARENT and
| > CLONE_SIGHAND with CLONE_NEWPID, at least until the required semantics of
| > the pid namespaces are clear.
| >
| > Changelog[v2]:
| > 	[Eric Biederman] Disable CLONE_SIGHAND also ???
| >
| > Signed-off-by: Sukadev Bhattiprolu <sukadev at us.ibm.com>
| > Acked-by: Roland McGrath <roland at redhat.com>
| > ---
| >  kernel/pid_namespace.c |    2 +-
| >  1 file changed, 1 insertion(+), 1 deletion(-)
| >
| > Index: linux-mmotm/kernel/pid_namespace.c
| > ===================================================================
| > --- linux-mmotm.orig/kernel/pid_namespace.c	2009-06-30 23:01:09.000000000 -0700
| > +++ linux-mmotm/kernel/pid_namespace.c	2009-06-30 23:49:06.000000000 -0700
| > @@ -118,7 +118,7 @@ struct pid_namespace *copy_pid_ns(unsign
| >  {
| >  	if (!(flags & CLONE_NEWPID))
| >  		return get_pid_ns(old_ns);
| > -	if (flags & CLONE_THREAD)
| > +	if (flags & (CLONE_THREAD|CLONE_PARENT|CLONE_SIGHAND))
| >  		return ERR_PTR(-EINVAL);
| 
| Still can't understand why CLONE_SIGHAND is forbidden...
| 
| CLONE_SIGHAND doesn't mean we share the signal queue, so what is
| the reason?

I don't have a convincing reason. We could disable just the
CLONE_NEWPID|CLONE_PARENT combination till we have a need for it. We
talked about removing CLONE_PARENT but backed-off since some application
may be using it. Disabling specific combinations like this (CLONE_NEWPID is
relatively a new flag) could make it a little easier to remove CLONE_PARENT
in the future.

Sukadev


More information about the Containers mailing list