[PATCH v1 00/11] Zero page->private when freeing pages
From: Zi Yan
Date: Sun Feb 22 2026 - 22:28:54 EST
Hi all,
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.
People are only cc'd on the cover letter and related patches.
Mailing lists get all patches.
Patch 1 to 9: fix all users do not zero ->private upon freeing pages.
I only tested part of them, so would like to get reviews to make sure I
did the right thing.
Patch 10 : restores page->private check in folio split code, since
the code was removed in a prior commit without a proper reason.
Patch 11 : adds checks in page freeing path, __free_pages_prepare(),
to make sure freed pages have zeroed ->prviate.
Any comment or suggestion is welcome.
Thanks.
Link: https://lore.kernel.org/all/91F2E741-5473-4D34-ADA1-C9E6EDCBF5E0@xxxxxxxxxx/ [1]
# MM - THP
Cc: David Hildenbrand <david@xxxxxxxxxx>
Cc: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>
Cc: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
Cc: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx>
Cc: Nico Pache <npache@xxxxxxxxxx>
Cc: Ryan Roberts <ryan.roberts@xxxxxxx>
Cc: Dev Jain <dev.jain@xxxxxxx>
Cc: Barry Song <baohua@xxxxxxxxxx>
Cc: Lance Yang <lance.yang@xxxxxxxxx>
# MM - page allocator
Cc: Suren Baghdasaryan <surenb@xxxxxxxxxx>
Cc: Michal Hocko <mhocko@xxxxxxxx>
Cc: Brendan Jackman <jackmanb@xxxxxxxxxx>
Cc: Johannes Weiner <hannes@xxxxxxxxxxx>
# relay
Cc: Jason Xing <kernelxing@xxxxxxxxxxx>
Cc: Yushan Zhou <katrinzhou@xxxxxxxxxxx>
Cc: "Masami Hiramatsu (Google)" <mhiramat@xxxxxxxxxx>
# MM - slub
Cc: Vlastimil Babka <vbabka@xxxxxxxxxx>
Cc: Christoph Lameter <cl@xxxxxxxxxx>
Cc: David Rientjes <rientjes@xxxxxxxxxx>
Cc: Roman Gushchin <roman.gushchin@xxxxxxxxx>
Cc: Harry Yoo <harry.yoo@xxxxxxxxxx>
# DRM TTM
Cc: Christian Koenig <christian.koenig@xxxxxxx>
Cc: Huang Rui <ray.huang@xxxxxxx>
Cc: Matthew Auld <matthew.auld@xxxxxxxxx>
Cc: Matthew Brost <matthew.brost@xxxxxxxxx>
Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>
Cc: Maxime Ripard <mripard@xxxxxxxxxx>
Cc: Thomas Zimmermann <tzimmermann@xxxxxxx>
Cc: David Airlie <airlied@xxxxxxxxx>
Cc: Simona Vetter <simona@xxxxxxxx>
# Block
Cc: Jens Axboe <axboe@xxxxxxxxx>
# watch queue
Cc: Christian Brauner <brauner@xxxxxxxxxx>
Cc: K Prateek Nayak <kprateek.nayak@xxxxxxx>
Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx>
Cc: Eric Sandeen <sandeen@xxxxxxxxxx>
# binder
Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Cc: "Arve Hjønnevåg" <arve@xxxxxxxxxxx>
Cc: Todd Kjos <tkjos@xxxxxxxxxxx>
Cc: Christian Brauner <brauner@xxxxxxxxxx>
Cc: Carlos Llamas <cmllamas@xxxxxxxxxx>
Cc: Alice Ryhl <aliceryhl@xxxxxxxxxx>
# null_blk
Cc: Damien Le Moal <dlemoal@xxxxxxxxxx>
Cc: Johannes Thumshirn <johannes.thumshirn@xxxxxxx>
# percpu
Cc: Dennis Zhou <dennis@xxxxxxxxxx>
Cc: Tejun Heo <tj@xxxxxxxxxx>
Cc: Christoph Lameter <cl@xxxxxxxxxx>
# erofs
Cc: Gao Xiang <xiang@xxxxxxxxxx>
Cc: Yue Hu <zbestahu@xxxxxxxxx>
Cc: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx>
Cc: Sandeep Dhavale <dhavale@xxxxxxxxxx>
Cc: Hongbo Li <lihongbo22@xxxxxxxxxx>
Cc: Chunhai Guo <guochunhai@xxxxxxxx>
# lists
Cc: linux-erofs@xxxxxxxxxxxxxxxx
Cc: linux-block@xxxxxxxxxxxxxxx
Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx
Cc: linux-mm@xxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Zi Yan (11):
relay: zero page->private when freeing pages
mm/slub: zero page->private when freeing pages
drm/ttm: zero page->private when freeing pages
blk-mq: zero page->private when freeing pages
watch_queue: zero page->private when freeing pages
binder: zero page->private when freeing pages
null_blk: zero page->private when freeing pages
percpu: zero page->private when freeing pages
erofs: zero page->private when freeing pages
mm/huge_memory: add page->private check back in
__split_folio_to_order()
mm/page_alloc: check page->private upon page free
block/blk-mq-tag.c | 6 +++++-
drivers/android/binder_alloc.c | 1 +
drivers/block/null_blk/main.c | 1 +
drivers/gpu/drm/ttm/ttm_pool.c | 1 +
fs/erofs/zutil.c | 1 +
kernel/relay.c | 8 ++++++--
kernel/watch_queue.c | 8 ++++++--
mm/huge_memory.c | 10 ++++++++++
mm/page_alloc.c | 3 ++-
mm/percpu-vm.c | 4 +++-
mm/slub.c | 1 +
11 files changed, 37 insertions(+), 7 deletions(-)
--
2.51.0