diff options
-rw-r--r-- | kernel/fork.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index a31b823b3c2d..65ca6d27f24e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1166,6 +1166,14 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1166 | current->signal->flags & SIGNAL_UNKILLABLE) | 1166 | current->signal->flags & SIGNAL_UNKILLABLE) |
1167 | return ERR_PTR(-EINVAL); | 1167 | return ERR_PTR(-EINVAL); |
1168 | 1168 | ||
1169 | /* | ||
1170 | * If the new process will be in a different pid namespace | ||
1171 | * don't allow the creation of threads. | ||
1172 | */ | ||
1173 | if ((clone_flags & (CLONE_VM|CLONE_NEWPID)) && | ||
1174 | (task_active_pid_ns(current) != current->nsproxy->pid_ns)) | ||
1175 | return ERR_PTR(-EINVAL); | ||
1176 | |||
1169 | retval = security_task_create(clone_flags); | 1177 | retval = security_task_create(clone_flags); |
1170 | if (retval) | 1178 | if (retval) |
1171 | goto fork_out; | 1179 | goto fork_out; |