diff --git a/[refs] b/[refs] index 391226713458..f75b5b042bf1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 47cd813f2984569570021ce3d34cdf9cb20aa6a2 +refs/heads/master: d498b25a4f877be535246c4e5b6ee5890781a477 diff --git a/trunk/fs/namespace.c b/trunk/fs/namespace.c index 970fe79d7867..b0b15cc2117c 100644 --- a/trunk/fs/namespace.c +++ b/trunk/fs/namespace.c @@ -2344,17 +2344,13 @@ void __init mnt_init(void) void put_mnt_ns(struct mnt_namespace *ns) { - struct vfsmount *root; LIST_HEAD(umount_list); - if (!atomic_dec_and_lock(&ns->count, &vfsmount_lock)) + if (!atomic_dec_and_test(&ns->count)) return; - root = ns->root; - ns->root = NULL; - spin_unlock(&vfsmount_lock); down_write(&namespace_sem); spin_lock(&vfsmount_lock); - umount_tree(root, 0, &umount_list); + umount_tree(ns->root, 0, &umount_list); spin_unlock(&vfsmount_lock); up_write(&namespace_sem); release_mounts(&umount_list);