v1
2026-08-05
修复设备页迁移低内存回退 · v1
修复CPU fault到设备私有页迁移时,目的复合folio分配失败后的回退路径:原先THP拆分必失败且PMD只降级在故障VMA。
原始补丁链接
子 Patch(4)
1/4
mm/migrate_device: Fix THP splitting of a CPU faulted device private folio
修复 CPU fault 触发的 device private THP 迁移拆分失败:folio_split_unmapped() 时 folio 持有 do_huge_pmd_device_private() 和 migrate_vma_collect_huge_pmd() 两个额外引用,导致引用计数检查失败返回 -EAGAIN。
2/4
mm/migrate_device: Apply the fault reference to the correct folio
修正 __migrate_device_pages() 将 CPU fault 的 extra_cnt 从 head folio 错误应用到所有 split 子 folio,导致其他子 folio 因引用计数多一而迁移失败;改为按子 folio 对照源页计算,并使用子 folio 自身 mapping。
3/4
drm/pagemap: Fix folio allocation fallback and use-after-put
修复 drm_pagemap_migrate_populate_ram_pfn():高阶 folio 分配失败缺 __GFP_NOWARN 且无回退,错误路径 put_page() 后用 folio_order() 导致 UAF;增加 order-0 回退并提前计算 order。
4/4
drm/pagemap: Add fault injection for higher-order RAM folio allocation
为 drm_pagemap 高阶 folio 分配增加 fault_attr 故障注入,暴露于 /sys/kernel/debug/drm_pagemap_fault_inject,强制分配失败以确定性覆盖 order-0 回退路径;CONFIG_FAULT_INJECTION 关闭时编译为常量 false。