Re: [PATCH RFC 02/12] mm/slab: remove objs_per_slab()
Suren Baghdasaryan <[email protected]>
| Newsgroups | org.kernel.vger.cgroups,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <CAJuCfpE1P=8RiSwm1FV2TCpM2FPo3A4VH5izpKR=J9F-_h5Y_Q@mail.gmail.com> |
On Wed, Jul 15, 2026 at 3:10 AM Vlastimil Babka (SUSE) <[email protected]> wrote: > > The function has an unused kmem_cache argument and almost nothing uses > it anyway; doing slab->objects is simpler. Remove it with the last two > users. KUNIT_EXPECT_EQ() needs a cast to avoid "error: ‘typeof’ applied > to a bit-field" but we don't need to keep a wrapper just for that. > > Signed-off-by: Vlastimil Babka (SUSE) <[email protected]> Reviewed-by: Suren Baghdasayan <[email protected]> > --- > mm/kfence/kfence_test.c | 2 +- > mm/slab.h | 6 ------ > mm/slub.c | 3 +-- > 3 files changed, 2 insertions(+), 9 deletions(-) > > diff --git a/mm/kfence/kfence_test.c b/mm/kfence/kfence_test.c > index de2d0f7d62b1..9867c03ef0ae 100644 > --- a/mm/kfence/kfence_test.c > +++ b/mm/kfence/kfence_test.c > @@ -295,7 +295,7 @@ static void *test_alloc(struct kunit *test, size_t size, gfp_t gfp, enum allocat > * memcg accounting works correctly. > */ > KUNIT_EXPECT_EQ(test, obj_to_index(s, slab, alloc), 0U); > - KUNIT_EXPECT_EQ(test, objs_per_slab(s, slab), 1); > + KUNIT_EXPECT_EQ(test, ((unsigned int)slab->objects), 1); > > if (policy == ALLOCATE_ANY) > return alloc; > diff --git a/mm/slab.h b/mm/slab.h > index f5e336b6b6b0..01535e1e2d3c 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -330,12 +330,6 @@ static inline unsigned int obj_to_index(const struct kmem_cache *cache, > return __obj_to_index(cache, slab_address(slab), obj); > } > > -static inline int objs_per_slab(const struct kmem_cache *cache, > - const struct slab *slab) > -{ > - return slab->objects; > -} > - > /* > * State of the slab allocator. > * > diff --git a/mm/slub.c b/mm/slub.c > index a4be70d080fb..9e25f2dce7a6 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -2127,7 +2127,6 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, > gfp_t gfp, unsigned int alloc_flags) > { > const bool allow_spin = alloc_flags_allow_spinning(alloc_flags); > - unsigned int objects = objs_per_slab(s, slab); > bool new_slab = alloc_flags & SLAB_ALLOC_NEW_SLAB; > unsigned long new_exts; > unsigned long old_exts; > @@ -2183,7 +2182,7 @@ int alloc_slab_obj_exts(struct slab *slab, struct kmem_cache *s, > #endif > retry: > old_exts = READ_ONCE(slab->obj_exts); > - handle_failed_objexts_alloc(old_exts, vec, objects); > + handle_failed_objexts_alloc(old_exts, vec, slab->objects); > > if (new_slab) { > /* > > -- > 2.55.0 >