Question: copy_process() and CLONE_NEWNS

Tobias Boege tobias at gambas-buch.de
Fri Feb 1 06:58:01 EST 2013


On Fri, 01 Feb 2013, Kevin Wilson wrote:
> Hi all,
> question:
> 
> In copy_process() we have:
> 
> static struct task_struct *copy_process(unsigned long clone_flags,
>                                          unsigned long stack_start,
>                                          struct pt_regs *regs,
>                                          unsigned long stack_size,
>                                          int __user *child_tidptr,
>                                          struct pid *pid,
>                                          int trace)
>  {
>          int retval;
>          struct task_struct *p;
>          int cgroup_callbacks_done = 0;
> 
>          if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
>                  return ERR_PTR(-EINVAL);
>  ...
> ...
> 
> 
> see :http://lxr.free-electrons.com/source/kernel/fork.c#L1128
> 
> Why is the CLONE_NEWNS, when set, cause an error in copy_process(), as
> shown above ?
> is it not permitted that CLONE_NEWNS will be set ?

It seems so :-)

clone(2)'s manpage also says:

"It is not permitted to specify both CLONE_NEWNS and CLONE_FS in the same
clone() call."

Regards,
Tobi




More information about the Kernelnewbies mailing list