From f80b84358f65167546b6cd58f867ef5669f22f3d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 20 Aug 2025 21:48:35 -0400 Subject: [PATCH] has_locked_children(): use guards ... and document the locking requirements of __has_locked_children() Reviewed-by: Christian Brauner Signed-off-by: Al Viro --- fs/namespace.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 59948cbf9c47f..2cb3cb8307ca0 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2373,6 +2373,7 @@ void dissolve_on_fput(struct vfsmount *mnt) } } +/* locks: namespace_shared && pinned(mnt) || mount_locked_reader */ static bool __has_locked_children(struct mount *mnt, struct dentry *dentry) { struct mount *child; @@ -2389,12 +2390,8 @@ static bool __has_locked_children(struct mount *mnt, struct dentry *dentry) bool has_locked_children(struct mount *mnt, struct dentry *dentry) { - bool res; - - read_seqlock_excl(&mount_lock); - res = __has_locked_children(mnt, dentry); - read_sequnlock_excl(&mount_lock); - return res; + guard(mount_locked_reader)(); + return __has_locked_children(mnt, dentry); } /* -- 2.47.3