From: Brendan Jackman <jackmanb@google.com>
To: Gregory Price <gourry@gourry.net>,
"Vlastimil Babka (SUSE)" <vbabka@kernel.org>
Cc: Brendan Jackman <jackmanb@google.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Wei Xu <weixugc@google.com>,
Johannes Weiner <hannes@cmpxchg.org>, Zi Yan <ziy@nvidia.com>,
Lorenzo Stoakes <ljs@kernel.org>, <linux-mm@kvack.org>,
<linux-kernel@vger.kernel.org>, <x86@kernel.org>,
<rppt@kernel.org>, Sumit Garg <sumit.garg@oss.qualcomm.com>,
<derkling@google.com>, <reijiw@google.com>,
Will Deacon <will@kernel.org>, <rientjes@google.com>,
"Kalyazin, Nikita" <kalyazin@amazon.co.uk>,
<patrick.roy@linux.dev>,
"Itazuri, Takahiro" <itazur@amazon.co.uk>,
Andy Lutomirski <luto@kernel.org>,
David Kaplan <david.kaplan@amd.com>,
Thomas Gleixner <tglx@kernel.org>, Yosry Ahmed <yosry@kernel.org>
Subject: Re: [PATCH v2 00/22] mm: Add __GFP_UNMAPPED
Date: Fri, 15 May 2026 09:31:15 +0000 [thread overview]
Message-ID: <DIJ59AT4F3Q9.1JN2FOZZ47H4Q@google.com> (raw)
In-Reply-To: <agS76pNPlPVLgpFA@gourry-fedora-PF4VCD3F>
On Wed May 13, 2026 at 5:59 PM UTC, Gregory Price wrote:
> On Wed, May 13, 2026 at 07:38:01PM +0200, Vlastimil Babka (SUSE) wrote:
>> On 5/13/26 19:28, Gregory Price wrote:
>> >
>> > Hm. I'm not quite wrapping my head around the TLB issue fully.
>> >
>> > If there's no kernel direct mapping, and there's no userland mapping,
>> > the stale TLB entry comes from... the page formerly being present in the
>> > page tables and a stale TLB entry lying about after the page is freed?
>>
>> It's the direct mapping, we assume it's always there and unchanged, and only
>> kernel can access the contents through it. So nobody flushes it when freeing
>> any pages. Userspace processes can't exploit anything stale there, in
>> absence of kernel's UAF bugs (or e.g. Meltdown like cpu bugs).
>>
>
> Ah, I follow.
>
> If everything is default-unmapped, then you don't have to worry about
> this issue - except when a stolen block is returned or an ephemeral
> mapping is unmapped after the operation.
>
> pivoting...
>
> On the GFP front, i wonder if you could factor out the core of
> alloc_frozen_pages_noprof() and add alloc_unmapped_pages_noprof()
> which adds (alloc_flags |= ALLOC_UNMAPPED) instead of adding
> __GFP_UNMAPPED.
>
> I have been considering something similar for __GFP_PRIVATE, but this
> has the added downside of increasing the surface of the buddy for each
> new narrow use case (in my case, private nodes, in this case unmapped
> allocations).
>
> unless of course we nip that in the bud with something like
>
> struct page *
> alloc_pages_special(enum buddy_context ctxt, gfp_t gfp_mask, ...)
> {
> switch (ctxt) {
> ... internal-only details about how that case is handled ...
> }
> }
>
> and just go ahead and allow the buddy to grow internally without adding
> new gfp flags or an infinite number of interfaces.
Yeah, this is what I'm thinking too. I don't think growing the interface
is such a big deal if we can put it in mm/internal.h. For __GFP_UNMAPPED
and ASI's equivalent, we would eventually want to expose the functionality
outside of mm/, but that doesn't mean we have to directly expose the
page allocator interface itself. Do you think it's a similar story for
__GFP_PRIVATE?
Anyway my initial thought was a variant of alloc_pages that lets you
directly specify alloc flags alongside/instead of GFP flags. This is
actually a bit fiddly though since the GFP flags -> alloc flags thing
isn't a clean division. Maybe it should be?
> Of course that means users have to know the context in which they're
> being allocated. Right now you can kind of "transiently cheat" by
> passing a GFP flag through a bunch of interfaces and that makes certain
> allocations reachable - but maybe we should not be encouraging that kind
> of design for these kinds of allocator extensions?
Hm, for __GFP_UNMAPPED (and __GFP_SENSITIVE in the future), it is
nothing to do with the allocation context. It's really expressing
something about the page, i.e:
- __GFP_SENSITIVE means "We might put user data in this page"
- __GFP_UNMAPPED means "We might put user data in this page, and I know
the kernel doesn't need to access it in the direct map"
So, for those cases, I think a GFP flag is actually conceptually
correct, the only reason I can see to avoid it is because of bitmap
space.
next prev parent reply other threads:[~2026-05-15 9:31 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-20 18:23 [PATCH v2 00/22] mm: Add __GFP_UNMAPPED Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 01/22] x86/mm: split out preallocate_sub_pgd() Brendan Jackman
2026-03-20 19:42 ` Dave Hansen
2026-03-23 11:01 ` Brendan Jackman
2026-03-24 15:27 ` Borislav Petkov
2026-03-25 13:28 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 02/22] x86/mm: Generalize LDT remap into "mm-local region" Brendan Jackman
2026-03-20 19:47 ` Dave Hansen
2026-03-23 12:01 ` Brendan Jackman
2026-03-23 12:57 ` Brendan Jackman
2026-03-25 14:23 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 03/22] x86/tlb: Expose some flush function declarations to modules Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 04/22] mm: Create flags arg for __apply_to_page_range() Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 05/22] mm: Add more flags " Brendan Jackman
2026-03-26 16:14 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 06/22] x86/mm: introduce the mermap Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 07/22] mm: KUnit tests for " Brendan Jackman
2026-03-24 8:00 ` kernel test robot
2026-03-20 18:23 ` [PATCH v2 08/22] mm: introduce for_each_free_list() Brendan Jackman
2026-05-11 13:46 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 09/22] mm/page_alloc: don't overload migratetype in find_suitable_fallback() Brendan Jackman
2026-05-11 13:51 ` Vlastimil Babka (SUSE)
2026-05-11 16:44 ` Brendan Jackman
2026-05-11 16:53 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 10/22] mm: introduce freetype_t Brendan Jackman
2026-05-11 15:34 ` Vlastimil Babka (SUSE)
2026-05-11 16:49 ` Brendan Jackman
2026-05-11 16:58 ` Vlastimil Babka (SUSE)
2026-05-11 18:17 ` Vlastimil Babka (SUSE)
2026-05-11 18:26 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 11/22] mm: move migratetype definitions to freetype.h Brendan Jackman
2026-05-11 15:35 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 12/22] mm: add definitions for allocating unmapped pages Brendan Jackman
2026-05-11 18:01 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 13/22] mm: rejig pageblock mask definitions Brendan Jackman
2026-05-11 18:07 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 14/22] mm: encode freetype flags in pageblock flags Brendan Jackman
2026-05-11 18:29 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 15/22] mm/page_alloc: remove ifdefs from pindex helpers Brendan Jackman
2026-05-11 18:30 ` Vlastimil Babka (SUSE)
2026-05-12 9:49 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 16/22] mm/page_alloc: separate pcplists by freetype flags Brendan Jackman
2026-05-13 8:46 ` Vlastimil Babka (SUSE)
2026-03-20 18:23 ` [PATCH v2 17/22] mm/page_alloc: rename ALLOC_NON_BLOCK back to _HARDER Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 18/22] mm/page_alloc: introduce ALLOC_NOBLOCK Brendan Jackman
2026-05-13 9:43 ` Vlastimil Babka (SUSE)
2026-05-15 13:36 ` Brendan Jackman
2026-05-15 15:52 ` Gregory Price
2026-03-20 18:23 ` [PATCH v2 19/22] mm/page_alloc: implement __GFP_UNMAPPED allocations Brendan Jackman
2026-05-13 15:43 ` Vlastimil Babka (SUSE)
2026-05-15 16:46 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 20/22] mm/page_alloc: implement __GFP_UNMAPPED|__GFP_ZERO allocations Brendan Jackman
2026-05-13 17:00 ` Vlastimil Babka (SUSE)
2026-05-15 16:50 ` Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 21/22] mm: Minimal KUnit tests for some new page_alloc logic Brendan Jackman
2026-03-20 18:23 ` [PATCH v2 22/22] mm/secretmem: Use __GFP_UNMAPPED when available Brendan Jackman
2026-03-31 14:40 ` Brendan Jackman
2026-05-13 16:17 ` [PATCH v2 00/22] mm: Add __GFP_UNMAPPED Gregory Price
2026-05-13 17:14 ` Brendan Jackman
2026-05-13 17:28 ` Gregory Price
2026-05-13 17:38 ` Vlastimil Babka (SUSE)
2026-05-13 17:59 ` Gregory Price
2026-05-15 9:31 ` Brendan Jackman [this message]
2026-05-15 16:04 ` Gregory Price
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DIJ59AT4F3Q9.1JN2FOZZ47H4Q@google.com \
--to=jackmanb@google.com \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=david.kaplan@amd.com \
--cc=david@kernel.org \
--cc=derkling@google.com \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=itazur@amazon.co.uk \
--cc=kalyazin@amazon.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=luto@kernel.org \
--cc=patrick.roy@linux.dev \
--cc=peterz@infradead.org \
--cc=reijiw@google.com \
--cc=rientjes@google.com \
--cc=rppt@kernel.org \
--cc=sumit.garg@oss.qualcomm.com \
--cc=tglx@kernel.org \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=yosry@kernel.org \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.