v1
2026-08-13
x86 PAT CPA多个修复 · v1
汇总 CPA 修复:DEBUG_PAGEALLOC 锁、ptdump UAF、IOMMU 陈旧页表、split/collapse 竞争和 RW 校验。
原始补丁链接
子 Patch(5)
1/5
x86/mm/pat: introcude cpa_lock() and cpa_unlock()
[Re: [PATCH 1/5] x86/mm/pat: introcude cpa_lock() and cpa_unlock()] On Tue, Jul 28, 2026 at 04:07:44PM +0300, Mike Rapoport (Microsoft) wrote: > The splitting and merging of kernel page table mappings
2/5
x86/mm/pat: acquire init_mm write lock on collapse to avoid UAF
修复CPA collapse时未加锁导致的UAF,在cpa_collapse_large_pages()中获取init_mm写锁,防止并发页表遍历者访问已释放页表。
3/5
x86/mm/pat: acquire init_mm read lock on attribute change to avoid UAF
On Tue, Jul 28, 2026 at 04:07:46PM +0300, Mike Rapoport wrote: > From: “Lorenzo Stoakes (ARM)” ljs@kernel.org > > A previous commit protected us against races between ptdump and CPA > collapse, howe
4/5
x86/mm/pat: allocate split page tables as kernel page tables
修复__split_large_page()分裂时未调用标准分配函数,导致页表未标记为内核页表,无法触发deferred freeing和IOTLB失效。
5/5
x86/mm/pat: fix effective RW computation in lookup_address_in_pgd_attr()
修复lookup_address_in_pgd_attr()中RW位累加bug:_PAGE_RW=0x2导致bool运算始终为0,无法检测W^X映射;加双感叹号标准化为0/1。