On 12/12/21 07:52, Hyeonggon Yoo wrote: > After commit f1ac9059ca34 ("mm/sl*b: Differentiate struct slab fields > by sl*b implementations"), we can reorder fields of struct slab > depending on slab allocator. > > For now, page_mapcount_reset() is called because page->_mapcount and > slab->units have same offset. But this is not necessary for > struct slab. Use unused field for units instead. > > Signed-off-by: Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> Will add to the series, thanks! > --- > mm/slab.h | 4 ++-- > mm/slob.c | 1 - > 2 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/mm/slab.h b/mm/slab.h > index 90d7fceba470..dd0480149d38 100644 > --- a/mm/slab.h > +++ b/mm/slab.h > @@ -50,8 +50,8 @@ struct slab { > struct list_head slab_list; > void * __unused_1; > void *freelist; /* first free block */ > - void * __unused_2; > - int units; > + long units; > + unsigned int __unused_2; > > #else > #error "Unexpected slab allocator configured" > diff --git a/mm/slob.c b/mm/slob.c > index 39b651b3e6e7..7b2d2c7d69cc 100644 > --- a/mm/slob.c > +++ b/mm/slob.c > @@ -404,7 +404,6 @@ static void slob_free(void *block, int size) > clear_slob_page_free(sp); > spin_unlock_irqrestore(&slob_lock, flags); > __ClearPageSlab(slab_page(sp)); > - page_mapcount_reset(slab_page(sp)); > slob_free_pages(b, 0); > return; > }