fs: add mnt_ns_empty() helper
authorChristian Brauner <brauner@kernel.org>
Fri, 21 Feb 2025 13:13:01 +0000 (14:13 +0100)
committerChristian Brauner <brauner@kernel.org>
Tue, 4 Mar 2025 08:29:52 +0000 (09:29 +0100)
Add a helper that checks whether a give mount namespace is empty instead
of open-coding the specific data structure check. This also be will be
used in follow-up patches.

Link: https://lore.kernel.org/r/20250221-brauner-open_tree-v1-2-dbcfcb98c676@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/mount.h
fs/namespace.c

index 820a79f1f7355d6d74c9157b3749f7d5aa1d29a5..e2501a724688363393cbd566b3b9d516ec6d26ce 100644 (file)
@@ -157,6 +157,11 @@ static inline bool mnt_ns_attached(const struct mount *mnt)
        return !RB_EMPTY_NODE(&mnt->mnt_node);
 }
 
+static inline bool mnt_ns_empty(const struct mnt_namespace *ns)
+{
+       return RB_EMPTY_ROOT(&ns->mounts);
+}
+
 static inline void move_from_ns(struct mount *mnt, struct list_head *dt_list)
 {
        struct mnt_namespace *ns = mnt->mnt_ns;
index d5c85b6ecb9878c271c319ef572ac51c33d7f296..8ca28737f4ee8dc9f6898e38d51f3b33f352f3a4 100644 (file)
@@ -5315,7 +5315,7 @@ static int grab_requested_root(struct mnt_namespace *ns, struct path *root)
         * We have to find the first mount in our ns and use that, however it
         * may not exist, so handle that properly.
         */
-       if (RB_EMPTY_ROOT(&ns->mounts))
+       if (mnt_ns_empty(ns))
                return -ENOENT;
 
        first = child = ns->root;
@@ -5340,7 +5340,7 @@ static int do_statmount(struct kstatmount *s, u64 mnt_id, u64 mnt_ns_id,
        int err;
 
        /* Has the namespace already been emptied? */
-       if (mnt_ns_id && RB_EMPTY_ROOT(&ns->mounts))
+       if (mnt_ns_id && mnt_ns_empty(ns))
                return -ENOENT;
 
        s->mnt = lookup_mnt_in_ns(mnt_id, ns);