Re: [PATCH v3 01/12] ns: Free anonymous mount namespaces via ns_common_free()

Christian Brauner <[email protected]>
Newsgroups org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-security-module
Message-ID <20260730-miterleben-minuten-komma-91fdfa5aaec7@brauner>
Hi Mickaël,

> free_mnt_ns() skipped ns_common_free() for anonymous mount namespaces
> (the "if (!is_anon_ns(ns))" guard) because they carry the reserved inum
> MNT_NS_ANON_INO, which proc_free_inum() must never release.
> 
> A following change needs ns_common_free() to run for every namespace, to
> release per-namespace state attached during __ns_common_init().  Move
> the reserved-inum decision into __ns_common_free() and let free_mnt_ns()
> call ns_common_free() unconditionally.
> 
> __ns_common_free() is shared by all namespace types, so it gates
> proc_free_inum() on ns->inum > MNT_NS_INO_SPECIAL_MAX (a new alias for
> MNT_NS_ANON_INO) rather than the mount-specific is_anon_ns().  The
> reserved inums (MNT_NS_ANON_INO and the *_NS_INIT_INO values just above
> it) belong to namespaces that are never freed, except the anonymous
> mount namespace; dynamically allocated inums are >= PROC_DYNAMIC_FIRST.
> So the comparison frees every dynamic inum and skips exactly the
> anonymous mount namespace, matching the previous guard.
> 
> Cc: Günther Noack <[email protected]>
> Cc: Paul Moore <[email protected]>
> Co-developed-by: Mickaël Salaün <[email protected]>
> Signed-off-by: Mickaël Salaün <[email protected]>

Seems good,
Reviewed-by: Christian Brauner (Amutable) <[email protected]>

--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.