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/[email protected]/ [1] # MM - THP Cc: David Hildenbrand <[email protected]> Cc: Lorenzo Stoakes <[email protected]> Cc: Baolin Wang <[email protected]> Cc: "Liam R. Howlett" <[email protected]> Cc: Nico Pache <[email protected]> Cc: Ryan Roberts <[email protected]> Cc: Dev Jain <[email protected]> Cc: Barry Song <[email protected]> Cc: Lance Yang <[email protected]> # MM - page allocator Cc: Suren Baghdasaryan <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Brendan Jackman <[email protected]> Cc: Johannes Weiner <[email protected]> # relay Cc: Jason Xing <[email protected]> Cc: Yushan Zhou <[email protected]> Cc: "Masami Hiramatsu (Google)" <[email protected]> # MM - slub Cc: Vlastimil Babka <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: David Rientjes <[email protected]> Cc: Roman Gushchin <[email protected]> Cc: Harry Yoo <[email protected]> # DRM TTM Cc: Christian Koenig <[email protected]> Cc: Huang Rui <[email protected]> Cc: Matthew Auld <[email protected]> Cc: Matthew Brost <[email protected]> Cc: Maarten Lankhorst <[email protected]> Cc: Maxime Ripard <[email protected]> Cc: Thomas Zimmermann <[email protected]> Cc: David Airlie <[email protected]> Cc: Simona Vetter <[email protected]> # Block Cc: Jens Axboe <[email protected]> # watch queue Cc: Christian Brauner <[email protected]> Cc: K Prateek Nayak <[email protected]> Cc: Davidlohr Bueso <[email protected]> Cc: Eric Sandeen <[email protected]> # binder Cc: Greg Kroah-Hartman <[email protected]> Cc: "Arve Hjønnevåg" <[email protected]> Cc: Todd Kjos <[email protected]> Cc: Christian Brauner <[email protected]> Cc: Carlos Llamas <[email protected]> Cc: Alice Ryhl <[email protected]> # null_blk Cc: Damien Le Moal <[email protected]> Cc: Johannes Thumshirn <[email protected]> # percpu Cc: Dennis Zhou <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Christoph Lameter <[email protected]> # erofs Cc: Gao Xiang <[email protected]> Cc: Yue Hu <[email protected]> Cc: Jeffle Xu <[email protected]> Cc: Sandeep Dhavale <[email protected]> Cc: Hongbo Li <[email protected]> Cc: Chunhai Guo <[email protected]> # lists Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] 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
