pidns: fix vfork() after unshare(CLONE_NEWPID)
[platform/adaptation/renesas_rcar/renesas_kernel.git] / kernel / fork.c
index c9eaf20..3561391 100644 (file)
@@ -1173,10 +1173,11 @@ static struct task_struct *copy_process(unsigned long clone_flags,
                return ERR_PTR(-EINVAL);
 
        /*
-        * If the new process will be in a different pid namespace
-        * don't allow the creation of threads.
+        * If the new process will be in a different pid namespace don't
+        * allow it to share a thread group or signal handlers with the
+        * forking task.
         */
-       if ((clone_flags & (CLONE_VM|CLONE_NEWPID)) &&
+       if ((clone_flags & (CLONE_SIGHAND | CLONE_NEWPID)) &&
            (task_active_pid_ns(current) !=
             current->nsproxy->pid_ns_for_children))
                return ERR_PTR(-EINVAL);