fix deadlock in pivot_root()
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 18 Mar 2011 12:29:36 +0000 (08:29 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sun, 27 Mar 2011 18:36:25 +0000 (11:36 -0700)
commit305c88ab06302e186aba8376a2b5c579a5c92291
tree5e8b4203fdb5cf48275e267fbadecacb489a9420
parent98f637b2ec791ddec58d90f9706feac2c5011ed8
fix deadlock in pivot_root()

commit 27cb1572e3e6bb1f8cf6bb3d74c914a87b131792 upstream.

Don't hold vfsmount_lock over the loop traversing ->mnt_parent;
do check_mnt(new.mnt) under namespace_sem instead; combined with
namespace_sem held over all that code it'll guarantee the stability
of ->mnt_parent chain all the way to the root.

Doing check_mnt() outside of namespace_sem in case of pivot_root()
is wrong anyway.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/namespace.c