diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-08-21 21:02:06 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-09-02 19:35:58 -0400 |
| commit | 8281f98a68d3306b2e47e6bb00708525562ccfdf (patch) | |
| tree | a084da74ef3caf2faa969cb1ff65a4224f6b70ab | |
| parent | 6b6516c56b04d556ce57deab1b8c2833e4af26c6 (diff) | |
current_chrooted(): use guards
here a use of __free(path_put) for dropping fs_root is enough to
make guard(mount_locked_reader) fit...
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/namespace.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index cf680fbf015e..0474b3a93dbf 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -6194,23 +6194,20 @@ bool our_mnt(struct vfsmount *mnt) bool current_chrooted(void) { /* Does the current process have a non-standard root */ - struct mount *root = current->nsproxy->mnt_ns->root; - struct path fs_root; - bool chrooted; + struct path fs_root __free(path_put) = {}; + struct mount *root; get_fs_root(current->fs, &fs_root); /* Find the namespace root */ - read_seqlock_excl(&mount_lock); + guard(mount_locked_reader)(); + + root = current->nsproxy->mnt_ns->root; while (unlikely(root->overmount)) root = root->overmount; - chrooted = fs_root.mnt != &root->mnt || !path_mounted(&fs_root); - - read_sequnlock_excl(&mount_lock); - path_put(&fs_root); - return chrooted; + return fs_root.mnt != &root->mnt || !path_mounted(&fs_root); } static bool mnt_already_visible(struct mnt_namespace *ns, |
