Skip to content

Commit c4cab55

Browse files
hygonitehcaster
authored andcommitted
mm/slab_common: cleanup kmalloc_large()
Now that kmalloc_large() and kmalloc_large_node() do mostly same job, make kmalloc_large() wrapper of kmalloc_large_node_notrace(). In the meantime, add missing flag fix code in kmalloc_large_node_notrace(). Signed-off-by: Hyeonggon Yoo <[email protected]> Reviewed-by: Vlastimil Babka <[email protected]> Signed-off-by: Vlastimil Babka <[email protected]>
1 parent bf37d79 commit c4cab55

File tree

1 file changed

+13
-22
lines changed

1 file changed

+13
-22
lines changed

mm/slab_common.c

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -905,35 +905,16 @@ gfp_t kmalloc_fix_flags(gfp_t flags)
905905
* directly to the page allocator. We use __GFP_COMP, because we will need to
906906
* know the allocation order to free the pages properly in kfree.
907907
*/
908-
void *kmalloc_large(size_t size, gfp_t flags)
909-
{
910-
void *ret = NULL;
911-
struct page *page;
912-
unsigned int order = get_order(size);
913-
914-
if (unlikely(flags & GFP_SLAB_BUG_MASK))
915-
flags = kmalloc_fix_flags(flags);
916-
917-
page = alloc_pages(flags | __GFP_COMP, order);
918-
if (likely(page)) {
919-
ret = page_address(page);
920-
mod_lruvec_page_state(page, NR_SLAB_UNRECLAIMABLE_B,
921-
PAGE_SIZE << order);
922-
}
923-
ret = kasan_kmalloc_large(ret, size, flags);
924-
/* As ret might get tagged, call kmemleak hook after KASAN. */
925-
kmemleak_alloc(ret, size, 1, flags);
926-
trace_kmalloc(_RET_IP_, ret, NULL, size, PAGE_SIZE << order, flags);
927-
return ret;
928-
}
929-
EXPORT_SYMBOL(kmalloc_large);
930908

931909
void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node)
932910
{
933911
struct page *page;
934912
void *ptr = NULL;
935913
unsigned int order = get_order(size);
936914

915+
if (unlikely(flags & GFP_SLAB_BUG_MASK))
916+
flags = kmalloc_fix_flags(flags);
917+
937918
flags |= __GFP_COMP;
938919
page = alloc_pages_node(node, flags, order);
939920
if (page) {
@@ -949,6 +930,16 @@ void *kmalloc_large_node_notrace(size_t size, gfp_t flags, int node)
949930
return ptr;
950931
}
951932

933+
void *kmalloc_large(size_t size, gfp_t flags)
934+
{
935+
void *ret = kmalloc_large_node_notrace(size, flags, NUMA_NO_NODE);
936+
937+
trace_kmalloc(_RET_IP_, ret, NULL, size,
938+
PAGE_SIZE << get_order(size), flags);
939+
return ret;
940+
}
941+
EXPORT_SYMBOL(kmalloc_large);
942+
952943
void *kmalloc_large_node(size_t size, gfp_t flags, int node)
953944
{
954945
void *ret = kmalloc_large_node_notrace(size, flags, node);

0 commit comments

Comments
 (0)