Re: [PATCH v3] slab: Add check for memcg_data != OBJEXTS_ALLOC_FAIL in folio_memcg_kmem

From: Roman Gushchin

Date: Tue Oct 14 2025 - 17:13:35 EST


Hao Ge <hao.ge@xxxxxxxxx> writes:

> From: Hao Ge <gehao@xxxxxxxxxx>
>
> Since OBJEXTS_ALLOC_FAIL and MEMCG_DATA_OBJEXTS currently share
> the same bit position, we cannot determine whether memcg_data still
> points to the slabobj_ext vector simply by checking
> folio->memcg_data & MEMCG_DATA_OBJEXTS.
>
> If obj_exts allocation failed, slab->obj_exts is set to OBJEXTS_ALLOC_FAIL,
> and during the release of the associated folio, the BUG check is triggered
> because it was mistakenly assumed that a valid folio->memcg_data
> was not cleared before freeing the folio.
>
> So let's check for memcg_data != OBJEXTS_ALLOC_FAIL in folio_memcg_kmem.
>
> Fixes: 7612833192d5 ("slab: Reuse first bit for OBJEXTS_ALLOC_FAIL")
> Suggested-by: Harry Yoo <harry.yoo@xxxxxxxxxx>
> Signed-off-by: Hao Ge <gehao@xxxxxxxxxx>
> ---
> v3: Simplify the solution, per Harry's suggestion in the v1 comments
> Add Suggested-by: Harry Yoo <harry.yoo@xxxxxxxxxx>

Acked-by: Roman Gushchin <roman.gushchin@xxxxxxxxx>

Thanks!