diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-08-20 20:24:23 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-09-02 19:35:57 -0400 |
| commit | 747e91e5b7396eba699989072c61e8fb076bbea4 (patch) | |
| tree | 46d44e7f205e5a64baade73a76ba61736976c084 | |
| parent | 61e68af33ac7977ea2457a861ab8eeb2406cb3f1 (diff) | |
mnt_already_visible(): use guards
clean fit; namespace_shared due to iterating through ns->mounts.
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/namespace.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 86a86be2b0ef..a5d37b97088f 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -6232,9 +6232,8 @@ static bool mnt_already_visible(struct mnt_namespace *ns, { int new_flags = *new_mnt_flags; struct mount *mnt, *n; - bool visible = false; - down_read(&namespace_sem); + guard(namespace_shared)(); rbtree_postorder_for_each_entry_safe(mnt, n, &ns->mounts, mnt_node) { struct mount *child; int mnt_flags; @@ -6281,13 +6280,10 @@ static bool mnt_already_visible(struct mnt_namespace *ns, /* Preserve the locked attributes */ *new_mnt_flags |= mnt_flags & (MNT_LOCK_READONLY | \ MNT_LOCK_ATIME); - visible = true; - goto found; + return true; next: ; } -found: - up_read(&namespace_sem); - return visible; + return false; } static bool mount_too_revealing(const struct super_block *sb, int *new_mnt_flags) |
