Re: [PATCH] mm: nommu: set MMF_OOM_SKIP in exit_mmap()

From: Michal Hocko

Date: Wed Oct 14 2026 - 04:04:15 EST


On Tue 13-10-26 17:56:19, Alexis Bouzigues via B4 Relay wrote:
> From: Alexis Bouzigues <BouziguesAlexis@xxxxxxxxxxxxx>
>
> Commit 212925802454 ("mm: oom: let oom_reap_task and exit_mmap run
> concurrently") moved setting MMF_OOM_SKIP from __mmput() into the MMU
> exit_mmap(), so it is no longer set when a NOMMU mm is torn down.
>
> As a result, a NOMMU OOM victim that has exited and freed its memory
> keeps the OOM killer from selecting another victim until it is reaped.
>
> Set MMF_OOM_SKIP in the NOMMU exit_mmap() once the VMAs are freed, as
> the MMU version does.

Is this a real problem that you can actually hit?

> Fixes: 212925802454 ("mm: oom: let oom_reap_task and exit_mmap run concurrently")
> Assisted-by: LLM
> Signed-off-by: Alexis Bouzigues <BouziguesAlexis@xxxxxxxxxxxxx>
> ---
> Restore MMF_OOM_SKIP on NOMMU mm teardown, which was lost when it moved
> into the MMU-only exit_mmap().
> ---
> mm/nommu.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/mm/nommu.c b/mm/nommu.c
> index 498e01ee40b0..913b2a1b5b3b 100644
> --- a/mm/nommu.c
> +++ b/mm/nommu.c
> @@ -1555,6 +1555,7 @@ void exit_mmap(struct mm_struct *mm)
> delete_vma(mm, vma);
> cond_resched();
> }
> + mm_flags_set(MMF_OOM_SKIP, mm);
> __mt_destroy(&mm->mm_mt);
> mmap_write_unlock(mm);
> }
>
> ---
> base-commit: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907
> change-id: 20261013-fix-nommu-exit-mmap-oom-skip-b8e68bf34b6d
>
> Best regards,
> --
> Alexis Bouzigues <BouziguesAlexis@xxxxxxxxxxxxx>
>
>

--
Michal Hocko
SUSE Labs