Browse files

namespaces, pid_ns: fix leakage on fork() failure

commit 5e2bf01 upstream.

Fork() failure post namespace creation for a child cloned with
CLONE_NEWPID leaks pid_namespace/mnt_cache due to proc being mounted
during creation, but not unmounted during cleanup.  Call
pid_ns_release_proc() during cleanup.

Signed-off-by: Mike Galbraith <>
Acked-by: Oleg Nesterov <>
Reviewed-by: "Eric W. Biederman" <>
Cc: Pavel Emelyanov <>
Cc: Cyrill Gorcunov <>
Cc: Louis Rilling <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Ben Hutchings <>
  • Loading branch information...
Mike Galbraith authored and koenkooi committed May 10, 2012
1 parent 89b52ac commit bf794089b8f4a8cb4b18b7d9dca0d1b7af43b732
Showing with 3 additions and 0 deletions.
  1. +3 −0 kernel/fork.c
@@ -47,6 +47,7 @@
#include <linux/audit.h>
#include <linux/memcontrol.h>
#include <linux/ftrace.h>
+#include <linux/proc_fs.h>
#include <linux/profile.h>
#include <linux/rmap.h>
#include <linux/ksm.h>
@@ -1387,6 +1388,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
if (p->io_context)
+ if (unlikely(clone_flags & CLONE_NEWPID))
+ pid_ns_release_proc(p->nsproxy->pid_ns);
if (p->mm)

0 comments on commit bf79408

Please sign in to comment.