]> git.baikalelectronics.ru Git - kernel.git/commit
pidns: fix a leak in /proc dentries and inodes with pid namespaces.
authorSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Wed, 11 Nov 2009 22:26:32 +0000 (14:26 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Nov 2009 15:25:57 +0000 (07:25 -0800)
commit3d29aefd8e23f96d086b0129745ebab56214e3a3
treedf2bbe3d67451a6c51a5056a40cd8dfa09dd5b29
parent38fdcee5e8f34320df21c0a967a0c8f96f21fe90
pidns: fix a leak in /proc dentries and inodes with pid namespaces.

Daniel Lezcano reported a leak in 'struct pid' and 'struct pid_namespace'
that is discussed in:

http://lkml.org/lkml/2009/10/2/159.

To summarize the thread, when container-init is terminated, it sets the
PF_EXITING flag, zaps other processes in the container and waits to reap
them.  As a part of reaping, the container-init should flush any /proc
dentries associated with the processes.  But because the container-init is
itself exiting and the following PF_EXITING check, the dentries are not
flushed, resulting in leak in /proc inodes and dentries.

This fix reverts the commit cbb96600a49ae0f22 ("Fix /proc dcache deadlock
in do_exit") which introduced the check for PF_EXITING.  At the time of
the commit, shrink_dcache_parent() flushed dentries from other filesystems
also and could have caused a deadlock which the commit fixed.  But as
pointed out by Eric Biederman, after commit 3a40a553a47d4eefb,
shrink_dcache_parent() no longer affects other filesystems.  So reverting
the commit is now safe.

As pointed out by Jan Kara, the leak is not as critical since the
unclaimed space will be reclaimed under memory pressure or by:

echo 3 > /proc/sys/vm/drop_caches

But since this check is no longer required, its best to remove it.

Signed-off-by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
Reported-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Jan Kara <jack@ucw.cz>
Cc: Andrea Arcangeli <andrea@cpushare.com>
Cc: Serge Hallyn <serue@us.ibm.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/proc/base.c