Re: [RFC] Null Namespaces
From: John Ericson <hidden>
Date: 2026-06-25 21:53:33
Also in:
linux-arch, linux-fsdevel, lkml
On Thu, Jun 25, 2026, at 5:00 PM, H. Peter Anvin wrote:
On 2026-06-24 16:12, Al Viro wrote:quoted
On Wed, Jun 24, 2026 at 06:51:47PM -0400, John Ericson wrote:quoted
#### Null mount namespace - requires: - null root file system: absolute paths don't work. - null current working directory: relative paths with traditional, non-`*at` system calls (and `*at` ones using `AT_FDCWD`) don't work. - All operations relating to the "ambient" mount tree don't work. - `*at` operations with a file descriptor do work.Huh? The last bit looks contradicts the previous one - if you have an opened directory in a mount from some namespace, those `*at` operations with that descriptor *will* be seeing the mount tree of that namespace, whatever the hell is "ambient" supposed to mean. Either that, or you will be exposing whatever's overmounted in that mount, which is a huge can of worms.It seems to me that this is really no different *in practice* to having an empty mount namespace, no? You might still be able to stat("/") and get a d--------- result, but how does that actually affect anything?
The argument against just having an empty, immutable root directory and calling it a day is the tie-in with a new process-spawning API discussed near the bottom of my original email. I want to have nice secure defaults, rather than forcing the programmer to remember to unshare, but I also don't want to degrade performance by speculatively creating new empty mount namespaces that might just be thrown away. Null fields alone get us both --- security and good performance.
The big thing with a lot of this is that introducing a null case can really complicate things all over the place, and since this is very likely to be only a niche use case, it kind of screams to me like it has the potential to become an attack surface like any other rarely used code in the kernel...
I understand and am sympathetic to this line of reasoning, but I think it is important to look at the patch in question (which I suppose I should soon submit) to weigh the competing concerns. The kernel rightfully has consolidated path resolution in a few key places as much as possible -- the internal `struct path` does not suffer from these issues. I barely modify those places to support null root and CWD, and because of that consolidation, we shouldn't expect new places to crop up in the future. (Duplicative path resolution logic is a bad idea whether or not we have a nascent, little-used NULL-cwd/root code path.) Therefore, I think existing code review, even among people totally ignorant of this feature, will protect us --- the vast majority of code will just be working with `struct path`, and be totally unaffected by this change. Moreover, every new feature starts rarely used. This is to me a judicious anti-feature (removing state, making more things fail) that should be quite intuitive to those developing for Linux, given the prominence of things like WASI, and I will do what I can in the Nix ecosystem to try to get it widely used in short order. Just guessing from its design, this ought to be something other ecosystems, like Android, are also interested in. John