diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-08-20 20:22:10 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-09-02 19:35:56 -0400 |
| commit | 61e68af33ac7977ea2457a861ab8eeb2406cb3f1 (patch) | |
| tree | 47738a411cf3407acef93ff9873fa1cdec58c29b /fs/namespace.c | |
| parent | 550dda45df9e54d6b0cd34456f5987e0c7d7522a (diff) | |
put_mnt_ns(): use guards
clean fit; guards can't be weaker due to umount_tree() call.
Setting emptied_ns requires namespace_excl, but not anything
mount_lock-related.
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namespace.c')
| -rw-r--r-- | fs/namespace.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 898a6b7307e4..86a86be2b0ef 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -6153,12 +6153,10 @@ void put_mnt_ns(struct mnt_namespace *ns) { if (!refcount_dec_and_test(&ns->ns.count)) return; - namespace_lock(); + guard(namespace_excl)(); emptied_ns = ns; - lock_mount_hash(); + guard(mount_writer)(); umount_tree(ns->root, 0); - unlock_mount_hash(); - namespace_unlock(); } struct vfsmount *kern_mount(struct file_system_type *type) |