Re: [PATCH] mm: make __GFP_SKIP_ZERO visible to skip zero operation

From: Eric Biggers
Date: Mon Sep 04 2023 - 14:22:46 EST


On Mon, Sep 04, 2023 at 10:34:25AM -0700, Linus Torvalds wrote:
> On Mon, 4 Sept 2023 at 00:55, Michal Hocko <mhocko@xxxxxxxx> wrote:
> >
> > Sooner or later this will become an
> > unreviewable mess so the value of init_on_alloc will become very
> > dubious.
>
> The value of init_on_alloc is *already* very dubious.
>
> Exactly because people will turn it off, because it hurts performance
> so much - and in pointless ways.
>
> You do realize that distributions - well, at least Fedora - simply
> don't turn INIT_ON_ALLOC_DEFAULT_ON on at all?
>
> So the current state of init_on_alloc is that nobody sane uses it. You
> have to think you're special to enable it, because it is *so* bad.
>
> Security people need to realize that the primary point of computing is
> NEVER EVER security. Security is entirely pointless without a usable
> system.
>
> Unless security people realize that they are always secondary, they
> aren't security people, they are just random wankers.
>
> And people who state this truism had better not get shamed for
> standing up to stupidity.
>

Android and Ubuntu both set CONFIG_INIT_ON_ALLOC_DEFAULT_ON. I think this makes
it clear that the init-on-alloc feature is useful for a substantial amount of
users even in its current form.

I would caution against checking the kernel config for the distro you happen to
be using and extrapolating that to all Linux systems.

Regardless, I'm in favor of a per allocation opt-out flag like GFP_SKIP_ZERO.
There are clear cases where it makes sense, for example some places in the VFS
where the performance impact is large and the code has been carefully reviewed.

I don't really like the idea
(https://lore.kernel.org/lkml/CAG_fn=UQEuvJ9WXou_sW3moHcVQZJ9NvJ5McNcsYE8xw_WEYGw@xxxxxxxxxxxxxx/)
of making the system administrator have to opt out allocation sites individually
via a kernel command-line parameter. Yes, it makes the opt out less likely to
be abused as two parties (developer and system administrator) have to consent to
each individual opt out. So it theory it sounds good. But I feel that doesn't
outweigh the fact that it would be complicated and hard to use. How about just
having two options: one to always honor GFP_SKIP_ZERO in the code and one to
always ignore it.

- Eric