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