v1
2026-10-22
devdax PUD 在 fork 时漏取引用 · v1
修复 copy_huge_pud() 复制 DAX PUD 时未取引用、rmap 和计数,导致 fork 后子进程 unmap 扣错父进程。
原始补丁链接
子 Patch(2)
1/2
mm/huge_memory: take a reference on a folio PUD copied by fork
copy_huge_pud() 复制 device DAX 的 PUD 时未像 copy_huge_pmd() 那样对 vm_normal_page_pud() 返回的 folio 取引用、复制 rmap 和计 mm 计数,子进程 unmap 会多减父进程资源;新增 folio_dup_file_rmap_pud() 并补上三者,避免 refcount/mapcount 下溢与 rss-counter 错误。
2/2
selftests/mm: test fork of a device DAX PUD
Fork a process that maps a device DAX instance with a PUD, in a VMA whose page tables fork copies because it has a guard region. The child must account the copied PUD in its RssFile. Without a refere