v3
2026-07-10
释放/分裂时清零尾页 private · v3
确保 compound 或高阶页面归还分配器前 tail_page->private 清零,并在大 folio 分裂时检查。
原始补丁链接
子 Patch(5)
1/5
mm/percpu-km: clear page->private before free them
在 percpu-km 释放页面前清除 page->private,以匹配后续 tail_page->private 必须为零的检查,防止因 pcpu_create_chunk() 设置 private 而触发警告。
2/5
mm/compaction: stop recording free page order in page->private
停止在 compaction 的 isolate_freepages 中将 free page order 存入 page->private,因 order 已通过数组索引记录,且无代码读取该字段,为后续强制 subpage->private 清零做准备。
3/5
mm/huge_memory: add page->private check back in __split_folio_to_order()
在 __split_folio_to_order() 中恢复对 tail page->private 的 DEBUG_VM 检查,确保 tail 页 private 未被误设,该检查曾被错误移除。
4/5
mm/page_alloc: make sure tail_page->private is zero at page free time
在 page free 路径(free_pages_prepare)中添加 bad_page 检查,确保 tail_page->private 为零,防止遗留 private 数据泄漏给新用户。
5/5
mm/page_alloc: remove set_page_private() in prep_compound_tail()
移除 prep_compound_tail() 中 set_page_private(tail, 0) 的调用,改为 VM_WARN_ON_ONCE 验证 tail->private 已为零,因后续 free 路径会强制检查。