aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2013-03-05 16:59:48 -0500
committerEric W. Biederman <ebiederm@xmission.com>2013-08-31 02:44:00 -0400
commit6e556ce209b09528dbf1931cbfd5d323e1345926 (patch)
tree5920aa522bb1be12f8c4c458c44d792f72ea3674
parent160da84dbb39443fdade7151bc63a88f8e953077 (diff)
pidns: Don't have unshare(CLONE_NEWPID) imply CLONE_THREAD
I goofed when I made unshare(CLONE_NEWPID) only work in a single-threaded process. There is no need for that requirement and in fact I analyzied things right for setns. The hard requirement is for tasks that share a VM to all be in the pid namespace and we properly prevent that in do_fork. Just to be certain I took a look through do_wait and forget_original_parent and there are no cases that make it any harder for children to be in the multiple pid namespaces than it is for children to be in the same pid namespace. I also performed a check to see if there were in uses of task->nsproxy_pid_ns I was not familiar with, but it is only used when allocating a new pid for a new task, and in checks to prevent craziness from happening. Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
-rw-r--r--kernel/fork.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 66635c80a813..eb45f1d72703 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1818,11 +1818,6 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
1818 if (unshare_flags & CLONE_NEWUSER) 1818 if (unshare_flags & CLONE_NEWUSER)
1819 unshare_flags |= CLONE_THREAD | CLONE_FS; 1819 unshare_flags |= CLONE_THREAD | CLONE_FS;
1820 /* 1820 /*
1821 * If unsharing a pid namespace must also unshare the thread.
1822 */
1823 if (unshare_flags & CLONE_NEWPID)
1824 unshare_flags |= CLONE_THREAD;
1825 /*
1826 * If unsharing a thread from a thread group, must also unshare vm. 1821 * If unsharing a thread from a thread group, must also unshare vm.
1827 */ 1822 */
1828 if (unshare_flags & CLONE_THREAD) 1823 if (unshare_flags & CLONE_THREAD)