namespaces, pid_ns: fix leakage on fork() failure
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 <efault@gmx.de> Acked-by: Oleg Nesterov <oleg@redhat.com> Reviewed-by: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Louis Rilling <louis.rilling@kerlabs.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
4998a6c0ed
commit
5e2bf01422
1 changed files with 3 additions and 0 deletions
|
@ -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>
|
||||
|
@ -1464,6 +1465,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|||
if (p->io_context)
|
||||
exit_io_context(p);
|
||||
bad_fork_cleanup_namespaces:
|
||||
if (unlikely(clone_flags & CLONE_NEWPID))
|
||||
pid_ns_release_proc(p->nsproxy->pid_ns);
|
||||
exit_task_namespaces(p);
|
||||
bad_fork_cleanup_mm:
|
||||
if (p->mm)
|
||||
|
|
Loading…
Reference in a new issue