On 4/14/22 10:57, Hyeonggon Yoo wrote: > There is no caller of kmalloc_order_trace() except kmalloc_large(). > Fold it into kmalloc_large() and remove kmalloc_order{,_trace}(). > > Also add tracepoint in kmalloc_large() that was previously > in kmalloc_order_trace(). > > Signed-off-by: Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> > Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > Changes from v1: > - updated some changelog (kmalloc_order() -> kmalloc_order_trace()) > > include/linux/slab.h | 22 ++-------------------- > mm/slab_common.c | 14 +++----------- > 2 files changed, 5 insertions(+), 31 deletions(-) > > diff --git a/include/linux/slab.h b/include/linux/slab.h > index 4c06d15f731c..6f6e22959b39 100644 > --- a/include/linux/slab.h > +++ b/include/linux/slab.h > @@ -484,26 +484,8 @@ static __always_inline void *kmem_cache_alloc_node_trace(struct kmem_cache *s, g > } > #endif /* CONFIG_TRACING */ > > -extern void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) __assume_page_alignment > - __alloc_size(1); > - > -#ifdef CONFIG_TRACING > -extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order) > - __assume_page_alignment __alloc_size(1); > -#else > -static __always_inline __alloc_size(1) void *kmalloc_order_trace(size_t size, gfp_t flags, > - unsigned int order) > -{ > - return kmalloc_order(size, flags, order); > -} > -#endif > - > -static __always_inline __alloc_size(1) void *kmalloc_large(size_t size, gfp_t flags) > -{ > - unsigned int order = get_order(size); > - return kmalloc_order_trace(size, flags, order); > -} > - > +extern void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment > + __alloc_size(1); I missed this extern in v1, please drop. > /** > * kmalloc - allocate memory > * @size: how many bytes of memory are required. > diff --git a/mm/slab_common.c b/mm/slab_common.c > index c4d63f2c78b8..308cd5449285 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -925,10 +925,11 @@ gfp_t kmalloc_fix_flags(gfp_t flags) > * directly to the page allocator. We use __GFP_COMP, because we will need to > * know the allocation order to free the pages properly in kfree. > */ > -void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) > +void *kmalloc_large(size_t size, gfp_t flags) > { > void *ret = NULL; > struct page *page; > + unsigned int order = get_order(size); > > if (unlikely(flags & GFP_SLAB_BUG_MASK)) > flags = kmalloc_fix_flags(flags); > @@ -943,19 +944,10 @@ void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) > ret = kasan_kmalloc_large(ret, size, flags); > /* As ret might get tagged, call kmemleak hook after KASAN. */ > kmemleak_alloc(ret, size, 1, flags); > - return ret; > -} > -EXPORT_SYMBOL(kmalloc_order); > - > -#ifdef CONFIG_TRACING > -void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order) > -{ > - void *ret = kmalloc_order(size, flags, order); > trace_kmalloc(_RET_IP_, ret, size, PAGE_SIZE << order, flags); > return ret; > } > -EXPORT_SYMBOL(kmalloc_order_trace); > -#endif > +EXPORT_SYMBOL(kmalloc_large); > > #ifdef CONFIG_SLAB_FREELIST_RANDOM > /* Randomize a generic freelist */