On Sat, 6 Apr 2024, Sangyun Kim wrote: > The struct track for every object in a new slab is already set up by > new_slab(), > so remove the duplicate initialization in early_kmem_cache_node_alloc(). > > Signed-off-by: Sangyun Kim <sangyun.kim@xxxxxxxxx> > > Co-developed-by: Hyunmin Lee <hyunminlr@xxxxxxxxx> > Signed-off-by: Hyunmin Lee <hyunminlr@xxxxxxxxx> > > Co-developed-by: Jeungwoo Yoo <casionwoo@xxxxxxxxx> > Signed-off-by: Jeungwoo Yoo <casionwoo@xxxxxxxxx> > > Cc: Gwan-gyeong Mun <gwan-gyeong.mun@xxxxxxxxx> > --- > mm/slub.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/mm/slub.c b/mm/slub.c > index 0dfc0c18a78b..5ffe46843b36 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -4938,7 +4938,6 @@ static void early_kmem_cache_node_alloc(int node) > BUG_ON(!n); > #ifdef CONFIG_SLUB_DEBUG > init_object(kmem_cache_node, n, SLUB_RED_ACTIVE); > - init_tracking(kmem_cache_node, n); > #endif > n = kasan_slab_alloc(kmem_cache_node, n, GFP_KERNEL, false); > slab->freelist = get_freepointer(kmem_cache_node, n); I think this is technically safe based on the current implementation because, as you said, allocate_slab() takes care of this for SLAB_STORE_USER. What user observable effect does this have given it would only make a difference when slab_state == DOWN?