On Fri, Sep 12, 2025 at 01:52:41PM +0200, Christian Brauner wrote:
> Move the mount namespace to the generic ns lookup infrastructure.
> This allows us to drop a bunch of members from struct mnt_namespace.

>  static void mnt_ns_tree_remove(struct mnt_namespace *ns)
>  {
>       /* remove from global mount namespace list */
> -     if (!is_anon_ns(ns)) {
> -             mnt_ns_tree_write_lock();
> -             rb_erase(&ns->mnt_ns_tree_node, &mnt_ns_tree);
> -             list_bidir_del_rcu(&ns->mnt_ns_list);
> -             mnt_ns_tree_write_unlock();
> -     }
> -
> -     call_rcu(&ns->mnt_ns_rcu, mnt_ns_release_rcu);
> -}
> -
> -static int mnt_ns_find(const void *key, const struct rb_node *node)
> -{
> -     const u64 mnt_ns_id = *(u64 *)key;
> -     const struct mnt_namespace *ns = node_to_mnt_ns(node);
> +     if (!is_anon_ns(ns))
> +             ns_tree_remove(ns);

Conflicts with "mnt_ns_tree_remove(): DTRT if mnt_ns had never been
added to mnt_ns_list".

FWIW, the right thing to do here is

        if (!RB_EMPTY_NODE(to_ns_common(ns)->ns_tree_node))
                ns_tree_remove(ns);


Reply via email to