Re: [PATCH v10 3/3] mm: add anonymous vma name refcounting

From: Kees Cook
Date: Fri Oct 08 2021 - 16:58:08 EST


On Fri, Oct 08, 2021 at 08:34:47AM +0200, Michal Hocko wrote:
> I am sorry but there were no strong arguments mentioned for strings so
> far. Effectively string require a more complex and more resource hungry
> solution. The only advantage is that strings are nicer to read for
> humans.

How I see it:

- Strings are already present in the "maps" output, so this doesn't
create a burden on userspace to grow new parsers.

- Strings for "anon" specifically have no required format (this is good)
it's informational like the task_struct::comm and can (roughly)
anything. There's no naming convention for memfds, AF_UNIX, etc. Why
is one needed here? That seems like a completely unreasonable
requirement.

- Strings need to be in kernel space because cross-process GUP has been a
constant source of security flaws.

> There hasn't been any plan presented for actual naming convention or how
> those names would be used in practice. Except for a more advanced
> resource management and that sounds like something that can work with
> ids just fine.

There doesn't need to be and there shouldn't be. Why aren't memfds names
an id? Because, to quote the man-page, "... serves only for debugging
purposes. Names do not affect the behavior of the file descriptor, and
as such multiple files can have the same name without any side effects."

And they aren't filtered _at all_ either. I think the anonymous vma name
series has gone out of its way to be safe and sane while still providing
the ease-of-use that it was designed to provide.

> Initially I was not really feeling strongly one way or other but more we
> are discussing the topic the more I see that strings have a very weak
> justification behind.

I just don't see any _down_ side to gaining this. There's only resource
utilization when it's used, and the complexity is minimal.

--
Kees Cook