v2
2026-09-10
修复 hugetlb 分配失败路径 · v2
hugetlb_alloc_folio() 在 mem_cgroup_charge_hugetlb() 失败时误调 free_huge_folio() 触发 VM_BUG_ON,且 -ENOMEM 导致缺页无限重试。
原始补丁链接
子 Patch(2)
1/2
mm: hugetlb: Return -ENOSPC on memcg charge failure
HugeTLB 计费失败改返回 -ENOSPC,让缺页处理发 SIGBUS,而不是 VM_FAULT_OOM 反复重试;HugeTLB 分配绕过 OOM killer,原路径会死循环。
2/2
mm: hugetlb: Drop refcount before freeing on memcg charge failure
memcg 计费失败时 folio 仍有 folio_ref_unfreeze() 的 refcount 1,错误路径改用 folio_put() 归还,避免 free_huge_folio() 触发 VM_BUG_ON 并损坏 freelist。