Re: [PATCH] slub: let need_slab_obj_exts() return false if SLAB_NO_OBJ_EXT is set
From: Hao Li
Date: Fri Feb 06 2026 - 06:36:30 EST
On Fri, Feb 06, 2026 at 07:21:29PM +0900, Harry Yoo wrote:
> On Fri, Feb 06, 2026 at 11:03:08AM +0100, Vlastimil Babka wrote:
> > On 2/6/26 11:01, Harry Yoo wrote:
> > > On Fri, Feb 06, 2026 at 10:40:54AM +0100, Vlastimil Babka wrote:
> > >> On 2/6/26 01:53, Harry Yoo wrote:
> > >> > On Thu, Feb 05, 2026 at 08:07:23PM +0800, Hao Li wrote:
> > >> >> SLAB_NO_OBJ_EXT is set for boot caches, but need_slab_obj_exts() doesn't
> > >> >> check this flag. We should return false unconditionally when
> > >> >> SLAB_NO_OBJ_EXT is set.
> > >> >>
> > >> >> Signed-off-by: Hao Li <hao.li@xxxxxxxxx>
> > >> >> ---
> > >> >
> > >> > Looks reasonable to me,
> > >> > Acked-by: Harry Yoo <harry.yoo@xxxxxxxxxx>
> > >>
> > >> Thanks, added to slab/for-7.0/obj_metadata
> > >> I think it doesn't change anything at the moment?
> > >
> > > ...unless you enable memory allocation profiling :)
> >
> > If I do, would kmem_cache or kmem_cache_node caches gotten obj_exts in
> > leftover space?
>
> /me builds and tests a new kernel with mem profiling always enabled...
>
> Yes, but only if merging is disabled.
>
> If you disable slab merging with `slab_nomerge`, kmem_cache gets
> obj_exts from SLAB_OBJ_EXTS_IN_OBJ.
>
> When I enable debug feature slab_debug=P (and thus change s->size),
> kmem_cache_node gets obj_exts from SLAB_OBJ_EXTS_IN_OBJ.
Thanks for testing, this matches what I've seen too.
Besides, even if the two boot caches, kmem_cache and kmem_cache_node, go through
the SLAB_OBJ_EXT_IN_OBJ path, it seems it wouldn't cause real trouble. We'd just
end up doing some unnecessary memset. So, as Vlastimil said, this patch is
mostly about doing the right thing.
--
Thanks,
Hao
>
> --
> Cheers,
> Harry / Hyeonggon