]> www.infradead.org Git - users/hch/misc.git/commitdiff
__detach_mounts(): use guards
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 21 Aug 2025 00:12:47 +0000 (20:12 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 2 Sep 2025 23:35:56 +0000 (19:35 -0400)
Clean fit for guards use; guards can't be weaker due to umount_tree() calls.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namespace.c

index 767ab751ee2a392f51cd7a757144a854d1fb7aae..1ae1ab8815c9b6aaa0e9c2fc57fa671c49e49a74 100644 (file)
@@ -2032,10 +2032,11 @@ void __detach_mounts(struct dentry *dentry)
        struct pinned_mountpoint mp = {};
        struct mount *mnt;
 
-       namespace_lock();
-       lock_mount_hash();
+       guard(namespace_excl)();
+       guard(mount_writer)();
+
        if (!lookup_mountpoint(dentry, &mp))
-               goto out_unlock;
+               return;
 
        event++;
        while (mp.node.next) {
@@ -2047,9 +2048,6 @@ void __detach_mounts(struct dentry *dentry)
                else umount_tree(mnt, UMOUNT_CONNECTED);
        }
        unpin_mountpoint(&mp);
-out_unlock:
-       unlock_mount_hash();
-       namespace_unlock();
 }
 
 /*