v1
2026-11-12
修复折叠PMD的PTE越界 · v1
修正 UFFDIO_MOVE 和 rmap 批量 unmap 中 pmd_addr_end() 误用导致的 folded PMD 下 PTE 表越界,避免内存破坏。
原始补丁链接
子 Patch(3)
1/3
mm/userfaultfd: fix PTE table overruns in UFFDIO_MOVE
折叠 PMD 下 pmd_addr_end() 不截断范围,UFFDIO_MOVE 的 move_present_ptes() 可能越界源/目的 PTE 表;新增 pte_table_clamped_end() 并用它同时钳制两个范围并保留地址回绕处理。
2/3
mm/rmap: fix PTE table overruns during batched unmap
折叠 PMD 时 folio_unmap_pte_batch() 的 pmd_addr_end() 无法截断范围,批量 unmap 大 folio 会越过 PTE 表;改用 pte_table_clamped_end() 按 PTE 表与 VMA 边界钳制。
3/3
mm/rmap: fix PTE table overruns during batched reference checks
folio_referenced_one() 在折叠 PMD 下同样可能越过 PTE 表检查大 folio 引用;改用 pte_table_clamped_end() 将批量检查范围限制在 PTE 表和 VMA 边界内。