Re: [PATCH 1/2] mm: kmemleak: serialize disable-time cleanup
From: Catalin Marinas
Date: Tue Nov 10 2026 - 12:06:51 EST
On Thu, Nov 05, 2026 at 05:52:49PM +0800, Weilin Tong wrote:
> kmemleak_do_cleanup() drops scan_mutex before removing tracked objects
> without kmemleak_lock. A concurrent clear command can therefore start
> another cleanup while the background cleanup is still running.
>
> Keep scan_mutex held until the background cleanup completes, serializing
> its lockless removals with explicit clearing and report readers.
>
> Fixes: 2abd839aa7e6 ("kmemleak: Do not corrupt the object_list during clean-up")
> Assisted-by: LLM
> Signed-off-by: Weilin Tong <tongweilin@xxxxxxxxxxxxxxxxx>
> ---
> mm/kmemleak.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 20c0eb41c..d959d11f6 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -2507,12 +2507,13 @@ static void kmemleak_do_cleanup(struct work_struct *work)
> * function.
> */
> kmemleak_free_enabled = 0;
> - mutex_unlock(&scan_mutex);
>
> + /* Serialize the lockless cleanup with report readers. */
> if (!kmemleak_found_leaks)
> __kmemleak_do_cleanup();
> else
> pr_info("Kmemleak disabled without freeing internal data. Reclaim the memory with \"echo clear > /sys/kernel/debug/kmemleak\".\n");
> + mutex_unlock(&scan_mutex);
> }
Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>
--
Catalin