On 18.06.25 20:43, Zi Yan wrote:
On 18 Jun 2025, at 13:39, David Hildenbrand wrote:
Let's allow for not clearing a page type before freeing a page to the
buddy.
We'll focus on having a type set on the first page of a larger
allocation only.
With this change, we can reliably identify typed folios even though
they might be in the process of getting freed, which will come in handy
in migration code (at least in the transition phase).
Signed-off-by: David Hildenbrand <da...@redhat.com>
---
mm/page_alloc.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 858bc17653af9..44e56d31cfeb1 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1380,6 +1380,9 @@ __always_inline bool free_pages_prepare(struct page *page,
mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1);
page->mapping = NULL;
}
+ if (unlikely(page_has_type(page)))
+ page->page_type = UINT_MAX;
+
if (is_check_pages_enabled()) {
if (free_page_is_bad(page))
bad++;
Should we be pedantic to only do this for PageOffline and PageZsmalloc
and warn for the rest page types?
I think we should just allow any page types. Limiting it to specific
types sounds like some use-after-free check that probably shouldn't be
handled that way.
--
Cheers,
David / dhildenb