Messages in this thread Patch in this message |  | | From | Ye Liu <> | | Subject | [PATCH] mm/khugepaged: clear MMF_VM_HUGEPAGE on mm_slot_alloc() failure | | Date | Fri, 1 May 2026 15:57:07 +0800 |
| |
From: Ye Liu <liuye@kylinos.cn>
__khugepaged_enter() sets MMF_VM_HUGEPAGE before allocating the corresponding mm_slot. If mm_slot_alloc() fails, the function returns with the flag set but without inserting the mm into the khugepaged tracking structures.
This leaves the mm in an inconsistent state: it is marked as registered (MMF_VM_HUGEPAGE set), but will never be scanned by khugepaged. Future attempts to register the mm are skipped since khugepaged_enter_vma() checks the flag and returns early.
Fix this by clearing MMF_VM_HUGEPAGE when mm_slot_alloc() fails, restoring the ability to retry registration later.
Signed-off-by: Ye Liu <liuye@kylinos.cn> --- mm/khugepaged.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 7d48d4fbd5f3..60ab7c1b61dd 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -559,8 +559,10 @@ void __khugepaged_enter(struct mm_struct *mm) return; slot = mm_slot_alloc(mm_slot_cache); - if (!slot) + if (!slot) { + mm_flags_clear(MMF_VM_HUGEPAGE, mm); return; + } spin_lock(&khugepaged_mm_lock); mm_slot_insert(mm_slots_hash, mm, slot); -- 2.43.0
|  |