[PATCH v1 00/11] Zero page->private when freeing pages
David Hildenbrand (Arm)
david at kernel.org
Mon Feb 23 20:36:36 AEDT 2026
On 2/23/26 05:28, Matthew Wilcox wrote:
> On Sun, Feb 22, 2026 at 10:26:30PM -0500, Zi Yan wrote:
>> Based on a recent discussion with David Hildenbrand on page->private
>> is not zero when a page is freed[1], this patchset is trying to fix all
>> users do not zero ->private when freeing a page and add checks to make
>> sure all freed pages have ->private set to zero. For compound pages,
>> both head page and tail pages need to have ->private set to zero.
>
> Sorry, I didn't notice this conversation. It seems entirely unnecessary
> to me to zero out page->private before freeing.
>
> I'm a bit confused that ac1ea219590c was needed too; I thought we
> cleared page->private in the allocation path, and I don't see why
> it needs to be cleared in the freeing path. split_page() should be
> clearing page->private.
See discussion at
https://lore.kernel.org/linux-mm/cbc3b5b3-09b5-4e3c-99f0-a1f67582afff@kernel.org/
>
> Can we discuss this at the THP Cabal meeting on Wednesday? I don't
> think that introducing this new rule that page->private must be cleared
> by the users is a good idea.
The benefit is that only the users that really use page->private will
also zero it out.
This implies that all pages that enter+leave the page allocator will
have page->private initialized and we can also likely do:
diff --git a/mm/internal.h b/mm/internal.h
index 9e0577413087..4ecdae78e0d2 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -724,7 +724,6 @@ static inline void prep_compound_tail(struct page
*head, int tail_idx)
p->mapping = TAIL_MAPPING;
set_compound_head(p, head);
- set_page_private(p, 0);
}
extern void prep_compound_page(struct page *page, unsigned int order);
Which is rather nice.
--
Cheers,
David
More information about the Linux-erofs
mailing list