From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0A42C4345F for ; Wed, 24 Apr 2024 21:41:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F89C6B031A; Wed, 24 Apr 2024 17:41:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 899AE6B031D; Wed, 24 Apr 2024 17:41:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 603186B031B; Wed, 24 Apr 2024 17:41:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3B23E8D0031 for ; Wed, 24 Apr 2024 17:41:13 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F0AD5A1223 for ; Wed, 24 Apr 2024 21:41:12 +0000 (UTC) X-FDA: 82045746384.16.3DCD44D Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf30.hostedemail.com (Postfix) with ESMTP id 63C6180018 for ; Wed, 24 Apr 2024 21:41:10 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=GvCXYf1u; spf=pass (imf30.hostedemail.com: domain of keescook@chromium.org designates 209.85.214.181 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713994870; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=X+QuwAWtOf2xR22BKuasFxurK2ECAnfs8jdrPoithuU=; b=rz2itMzAgHkgT73dHuG2D5w8l+pE181tYxFPiuWQpC3OJuZCpj3b9osajJlKnOiE/l6pJR 12csISYDbSIC+0HMaJvoVJsGGG2zhcITHTcwwwytiIFEHbepmypDxdAq5QTpN+xjJ5GpLz HIw6IkeiOhfQNjUWrw94f5FfF5YAdsk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=GvCXYf1u; spf=pass (imf30.hostedemail.com: domain of keescook@chromium.org designates 209.85.214.181 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713994870; a=rsa-sha256; cv=none; b=0br34Ehr5w76Z2C0KE0Bsts20HOpllm2DIhoWCmoT9//piWBF/r0UnNTJFtRJrykKODC+5 Yw87UyKKeycIZZt43N6kg1fjGk5Avlxg6igwMs++/ycxe+u8WSqFg6ru0l9HC28K/oKFYS JxCjHiUxH5fR2hidOCF831AxB6U5IIQ= Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1e4f341330fso3134925ad.0 for ; Wed, 24 Apr 2024 14:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1713994869; x=1714599669; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=X+QuwAWtOf2xR22BKuasFxurK2ECAnfs8jdrPoithuU=; b=GvCXYf1uQNd0NVOyt/hORV5TT4KMWYehKYaOfhxPL4cHt1WAD/jp3z/ABqBu0zt51q 7x6xttzM8GYl8C9f3SnBBGoGcxS4V58mKSTygBwZK9+oFVNiS9AQx/GIHh03kfU4MGkW yEOMPP9mN6805q7gs1ALE2v4nNwOmbC1UgxI8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713994869; x=1714599669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X+QuwAWtOf2xR22BKuasFxurK2ECAnfs8jdrPoithuU=; b=AiTI+d+6ViR73fHXhQ7QBvI963EAmGmqujbStiM/4BdxcGkFGa1j0EvqqYMixj38kK mzIObQEH+U5BcdSn3FvVA2GAnCLy+URzdD7B0izYAepN7/vHfkpkcUETigVG/Pd1LESB Gn/JgAGBK9DmOcSSKdo0zacwJVjL6A9F0/RncV9PKOrhG4/Q3jEzyiCZLXe8rSysbYMp rY8+PZQgI4BOAWKr6ohuUGh93y3CDrBBKsAAFSOJRyNFV2exVETKq1mq9Z77IJYmR4yU wszG07CFu9/dFZl5zHFHOh+IRojN1skN5dd/9YPZW1itpo6sW00NLzyY7/D9l5PVQm6d G9RA== X-Forwarded-Encrypted: i=1; AJvYcCXqie1mjluq7Vm610Buu4fJSbdudF7X+L+Am8u8mzwMQHwmsQ6o/i8tsytAELRmdKIllekyCWcw0louQV907yNoDgc= X-Gm-Message-State: AOJu0Yzh3ybY5SMC8Ci4OKszHl6CxHIVR9pZEQ6pThvPFnbltSsoIM/p +XZHpzjMk9FgYEzNXmMp8ze+/seWXfKGvFfA8tk0AGT95Q5hcH5+elwI2yBQvg== X-Google-Smtp-Source: AGHT+IHIXGHtzh8lHI9UAe8GBSXBeuQxS5IrYdgWRav1tlMqSSJ4dcU1FmJlbd5lVXFZJW2TuOd4FQ== X-Received: by 2002:a17:902:cf0e:b0:1e7:b775:64bd with SMTP id i14-20020a170902cf0e00b001e7b77564bdmr4707051plg.53.1713994869316; Wed, 24 Apr 2024 14:41:09 -0700 (PDT) Received: from www.outflux.net ([198.0.35.241]) by smtp.gmail.com with ESMTPSA id x5-20020a170902a38500b001e2bfd40b86sm12604928pla.47.2024.04.24.14.41.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Apr 2024 14:41:05 -0700 (PDT) From: Kees Cook To: Vlastimil Babka Cc: Kees Cook , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-hardening@vger.kernel.org, "GONG, Ruiqi" , Xiu Jianfeng , Suren Baghdasaryan , Kent Overstreet , Jann Horn , Matteo Rizzo , Thomas Graf , Herbert Xu , julien.voisin@dustri.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/6] mm/slab: Plumb kmem_buckets into __do_kmalloc_node() Date: Wed, 24 Apr 2024 14:40:59 -0700 Message-Id: <20240424214104.3248214-2-keescook@chromium.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240424213019.make.366-kees@kernel.org> References: <20240424213019.make.366-kees@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=8366; i=keescook@chromium.org; h=from:subject; bh=lWcazK2402lkD4Wrba9Q2qaF3Ixn3Ax0z7KNqGLKz60=; b=owEBbQKS/ZANAwAKAYly9N/cbcAmAcsmYgBmKXxuXSr8rdPRSyF2wBgMoZZNHIsBtwsrinlKe bq327jZWyuJAjMEAAEKAB0WIQSlw/aPIp3WD3I+bhOJcvTf3G3AJgUCZil8bgAKCRCJcvTf3G3A JjhaD/9qXDqOgVCP5PmY3bLEzzzpXHAburpbBFoBFgjOtLRbbCVNi0RXeJRDstJhZjQ1pSFczdM QuP1rYez2GCqsbpwqP/39GLi2CfoHjGr8Fzd0SM0gFnyMvWKgCo57WdcbvolAyq7Yh/YNK77dPA egxi2E4zufNQMrJHa8yj1lRv2SXvUtiwwhqpEHyEijmiiK1Xh7Y6P9x5lMiG/5ncfmQqjm6fsN9 GYRLjidguOaWEL37PqW6mA48nj9La6uF2qVApKk8allKd437NMwr6ChknmdQny65ggUP+tN2ARy 45Nb/YgZURzOlMvply7vlgbJprBaIzmAI+A6k2EYsJRkdUYkcrI2Alv1eFiIrEUcpxgLbycSI/m pGM9FBfYJhF8yOpuwlD/XAifJ/BQ2P9ugQj+D0zBfi5iX8Mas3UB4nC4AXCmU6MbhN/U2e9Yw84 Tqj35Urvfvfv8HCb5jf7dTQjZP+iu8iLVIJpHJKim2PUwciik3OQQDAskJrqN70pYdexnylVCF9 85XdAQYytNgqDmDbKXoQUcksz8LtATIg0a1kmk26vJjGxtc/jNs5yvxJtsIqpxRpezTN8xvoqTA 4GUn6gWe/LrYQFSgwpF4PVsgQ75hZzGbG4gf2uGo/lJ5YN9Sps2ciWQOM185FEQy/V3w3lg4n9m M6uPM7mb/9qJGVQ== X-Developer-Key: i=keescook@chromium.org; a=openpgp; fpr=A5C3F68F229DD60F723E6E138972F4DFDC6DC026 Content-Transfer-Encoding: 8bit X-Stat-Signature: 8p6oe454wf6z8qi7n8jkd9ydr6om1j64 X-Rspamd-Queue-Id: 63C6180018 X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1713994870-683186 X-HE-Meta: U2FsdGVkX1/bcQJtzNrbkxKdetYUQRdIrIrsv/PFYE+Uz37Vxj82bkvfHaMRRIWstEFs58DVydQ3J5usQfPfQo/y+D1TiokIf38vCBiwdLlOra1AOFLNq53wt92Wyw3WkABD66+61Hm64wn6fhnntwx6RnrlMDBaWbPfXpuPEnftr0WXDN80O3+BgmmHqU+EWZmKr1EiHdy4BHfVeHad951t8SF75W0+VlKB+qLbAJm+atjpapDKuDoLYNTBIjv7GF5ig8VUgA+e9YU7TFwfsfxNP7sk/gYOuQ+E5kywqDG/rPfmcZsWN5b27OD2NArSjv2/H8SBqIPQ3K6Z3v4BrHhwkQiaC+ElkWeUky0dtE2xYw+1s3tRUXR/Uiv0gi5omNosvXpzwr7eRHqHmuufDf5o1FsjnoizRpxtJKILvzsT6upM6zQEAxnoQSYz7zmy/rRtvZThNGbxaX7OxVNSbjd9+jeFRj8GC5JfO3ambPsyOakFkZD5JrxP91qwztz/VtAQ2yUdspBklYPJF33zueb64ee99IU1iZxZjKI8idYOoToDg1MaVn98pJgiL5G0vY/Y2CUuEnFd3w0jRbeeuVVq7+UKGCMa9M3W01jM/7/ohwnJhYlisrmz/viE0St5iTuNv97aHWL2JazaxjgINKGCGgJoVKMyPxt0sM57mgmccRO35/tdBA3baisozeiik5yluqm+U2k3pf5OZ5KxJeemQfUVR4+pGENFSiVhbVLTt1CcAJjFvT3igdaM6TWhJo/pxXIgBU04l+EglHnCWcv5L5Wxu8n4Ea7yzwdPLDcFwYOrQ++N6sdAOQCmp95mDb9oYLAjF4kppgvVajkM9fHl4qoiQNseFaZE79ra8RLQyrlfR3Q5h0yWWIPl97ArfIVKrzdmkmPIMcwmJnew1JbMij8pMgW3brse+6Y+HdTJbcvUpRsJTzw+Ai1Z0QMgcFjcLBwJLrBNTA5YpNA tZex3kMS znLA5GRTM2C+TLorHUr5TIFHaBvEZfsPGLh8eqk0vAxWxJ8MDcarIVf97Wb+2+0WQNbJ3QJnQ3uORrUWGmUWhj0quxNhHrnbxQdtlg6A5nZHr/nF7nHdTWIdPInYAE2qEvGrblTjYeQKMHuujYQ8j/jM4EFLdpGbwRD2Un1dt1IufdiFQpwz4BxD+9+TK2DS3NBNzvctuGyDW/XwAw9DMolBB/Ke98atlrITXA7tcSMWQUJ+ztfQ2Mp4HRnUpy5vu8qZWBEJzz22Fi3SKaTIGtwdYzFVBXDwdIEQ72Bpd/PPMe036+783JbWMh4ccNdqeX1PK++B8SXPftwniKpLD36qmpWHrnQ2fsObjgvYbaQIjh7D9u4adQLlLbdI/mLrQD3zVSN9Zzol4VZU8QJsEYFM4hvz7WcHZ5yDmzVfM38jTv7/JVNjAv7FeAMpv7Rx2hgRw5CNwpzDu3EpTJfEzrixmg+y3h5+SUvdrGzW2V19zGN23zMW6bPuwYiu9l6RGn7TSTHlup0dxf2E9Oj83FcUG2bEnZVubjthxYCHrlDDCGg0tkCrvJRlpxYz0wm/elEEpiHSZp6N8zT4TaCLKLq5m/hnRINb5XBhgYSfO/AH0kS/tV5mHGoG5Lq7SQtLij7WBsFb1NoNSunPWeL6De7AVc4W/zxWN8SzPJ9URi5NIxHtlRCj8GAZ4or+a2JJwH4AOv0UhP+eXhQyMUmis895L7BFujIZ9ErSl4AOjTDTkIfxgQFJFdFsvZYZBboZOSf5D+19QgGgPy/SgaZGRovpuNXcEgFXrBiohrE9sAARtVTK9dc25fCLltAiZizZHRcTSfmNQrVpsD8qCJ3VWr7kxiaEWz8Z4nTpMny0PMs2l9q0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: To be able to choose which buckets to allocate from, make the buckets available to the lower level kmalloc interfaces by adding them as the first argument. Where the bucket is not available, pass NULL, which means "use the default system kmalloc bucket set" (the prior existing behavior), as implemented in kmalloc_slab(). Signed-off-by: Kees Cook --- Cc: Vlastimil Babka Cc: Christoph Lameter Cc: Pekka Enberg Cc: David Rientjes Cc: Joonsoo Kim Cc: Andrew Morton Cc: Roman Gushchin Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: linux-mm@kvack.org Cc: linux-hardening@vger.kernel.org --- include/linux/slab.h | 16 ++++++++-------- lib/fortify_kunit.c | 2 +- mm/slab.h | 6 ++++-- mm/slab_common.c | 4 ++-- mm/slub.c | 14 +++++++------- mm/util.c | 2 +- 6 files changed, 23 insertions(+), 21 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index c8164d5db420..07373b680894 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -569,8 +569,8 @@ static __always_inline void kfree_bulk(size_t size, void **p) kmem_cache_free_bulk(NULL, size, p); } -void *__kmalloc_node_noprof(size_t size, gfp_t flags, int node) __assume_kmalloc_alignment - __alloc_size(1); +void *__kmalloc_node_noprof(kmem_buckets *b, size_t size, gfp_t flags, int node) + __assume_kmalloc_alignment __alloc_size(2); #define __kmalloc_node(...) alloc_hooks(__kmalloc_node_noprof(__VA_ARGS__)) void *kmem_cache_alloc_node_noprof(struct kmem_cache *s, gfp_t flags, @@ -679,7 +679,7 @@ static __always_inline __alloc_size(1) void *kmalloc_node_noprof(size_t size, gf kmalloc_caches[kmalloc_type(flags, _RET_IP_)][index], flags, node, size); } - return __kmalloc_node_noprof(size, flags, node); + return __kmalloc_node_noprof(NULL, size, flags, node); } #define kmalloc_node(...) alloc_hooks(kmalloc_node_noprof(__VA_ARGS__)) @@ -730,10 +730,10 @@ static inline __realloc_size(2, 3) void * __must_check krealloc_array_noprof(voi */ #define kcalloc(n, size, flags) kmalloc_array(n, size, (flags) | __GFP_ZERO) -void *kmalloc_node_track_caller_noprof(size_t size, gfp_t flags, int node, - unsigned long caller) __alloc_size(1); +void *kmalloc_node_track_caller_noprof(kmem_buckets *b, size_t size, gfp_t flags, int node, + unsigned long caller) __alloc_size(2); #define kmalloc_node_track_caller(...) \ - alloc_hooks(kmalloc_node_track_caller_noprof(__VA_ARGS__, _RET_IP_)) + alloc_hooks(kmalloc_node_track_caller_noprof(NULL, __VA_ARGS__, _RET_IP_)) /* * kmalloc_track_caller is a special version of kmalloc that records the @@ -746,7 +746,7 @@ void *kmalloc_node_track_caller_noprof(size_t size, gfp_t flags, int node, #define kmalloc_track_caller(...) kmalloc_node_track_caller(__VA_ARGS__, NUMA_NO_NODE) #define kmalloc_track_caller_noprof(...) \ - kmalloc_node_track_caller_noprof(__VA_ARGS__, NUMA_NO_NODE, _RET_IP_) + kmalloc_node_track_caller_noprof(NULL, __VA_ARGS__, NUMA_NO_NODE, _RET_IP_) static inline __alloc_size(1, 2) void *kmalloc_array_node_noprof(size_t n, size_t size, gfp_t flags, int node) @@ -757,7 +757,7 @@ static inline __alloc_size(1, 2) void *kmalloc_array_node_noprof(size_t n, size_ return NULL; if (__builtin_constant_p(n) && __builtin_constant_p(size)) return kmalloc_node_noprof(bytes, flags, node); - return __kmalloc_node_noprof(bytes, flags, node); + return __kmalloc_node_noprof(NULL, bytes, flags, node); } #define kmalloc_array_node(...) alloc_hooks(kmalloc_array_node_noprof(__VA_ARGS__)) diff --git a/lib/fortify_kunit.c b/lib/fortify_kunit.c index 493ec02dd5b3..ff059d88d455 100644 --- a/lib/fortify_kunit.c +++ b/lib/fortify_kunit.c @@ -220,7 +220,7 @@ static void alloc_size_##allocator##_dynamic_test(struct kunit *test) \ checker(expected_size, __kmalloc(alloc_size, gfp), \ kfree(p)); \ checker(expected_size, \ - __kmalloc_node(alloc_size, gfp, NUMA_NO_NODE), \ + __kmalloc_node(NULL, alloc_size, gfp, NUMA_NO_NODE), \ kfree(p)); \ \ orig = kmalloc(alloc_size, gfp); \ diff --git a/mm/slab.h b/mm/slab.h index 5f8f47c5bee0..f459cd338852 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -403,16 +403,18 @@ static inline unsigned int size_index_elem(unsigned int bytes) * KMALLOC_MAX_CACHE_SIZE and the caller must check that. */ static inline struct kmem_cache * -kmalloc_slab(size_t size, gfp_t flags, unsigned long caller) +kmalloc_slab(kmem_buckets *b, size_t size, gfp_t flags, unsigned long caller) { unsigned int index; + if (!b) + b = &kmalloc_caches[kmalloc_type(flags, caller)]; if (size <= 192) index = kmalloc_size_index[size_index_elem(size)]; else index = fls(size - 1); - return kmalloc_caches[kmalloc_type(flags, caller)][index]; + return (*b)[index]; } gfp_t kmalloc_fix_flags(gfp_t flags); diff --git a/mm/slab_common.c b/mm/slab_common.c index db9e1b15efd5..7cb4e8fd1275 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -702,7 +702,7 @@ size_t kmalloc_size_roundup(size_t size) * The flags don't matter since size_index is common to all. * Neither does the caller for just getting ->object_size. */ - return kmalloc_slab(size, GFP_KERNEL, 0)->object_size; + return kmalloc_slab(NULL, size, GFP_KERNEL, 0)->object_size; } /* Above the smaller buckets, size is a multiple of page size. */ @@ -1186,7 +1186,7 @@ __do_krealloc(const void *p, size_t new_size, gfp_t flags) return (void *)p; } - ret = kmalloc_node_track_caller_noprof(new_size, flags, NUMA_NO_NODE, _RET_IP_); + ret = kmalloc_node_track_caller_noprof(NULL, new_size, flags, NUMA_NO_NODE, _RET_IP_); if (ret && p) { /* Disable KASAN checks as the object's redzone is accessed. */ kasan_disable_current(); diff --git a/mm/slub.c b/mm/slub.c index 23bc0d236c26..a94a0507e19c 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -4093,7 +4093,7 @@ void *kmalloc_large_node_noprof(size_t size, gfp_t flags, int node) EXPORT_SYMBOL(kmalloc_large_node_noprof); static __always_inline -void *__do_kmalloc_node(size_t size, gfp_t flags, int node, +void *__do_kmalloc_node(kmem_buckets *b, size_t size, gfp_t flags, int node, unsigned long caller) { struct kmem_cache *s; @@ -4109,7 +4109,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, if (unlikely(!size)) return ZERO_SIZE_PTR; - s = kmalloc_slab(size, flags, caller); + s = kmalloc_slab(b, size, flags, caller); ret = slab_alloc_node(s, NULL, flags, node, caller, size); ret = kasan_kmalloc(s, ret, size, flags); @@ -4117,22 +4117,22 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, return ret; } -void *__kmalloc_node_noprof(size_t size, gfp_t flags, int node) +void *__kmalloc_node_noprof(kmem_buckets *b, size_t size, gfp_t flags, int node) { - return __do_kmalloc_node(size, flags, node, _RET_IP_); + return __do_kmalloc_node(b, size, flags, node, _RET_IP_); } EXPORT_SYMBOL(__kmalloc_node_noprof); void *__kmalloc_noprof(size_t size, gfp_t flags) { - return __do_kmalloc_node(size, flags, NUMA_NO_NODE, _RET_IP_); + return __do_kmalloc_node(NULL, size, flags, NUMA_NO_NODE, _RET_IP_); } EXPORT_SYMBOL(__kmalloc_noprof); -void *kmalloc_node_track_caller_noprof(size_t size, gfp_t flags, +void *kmalloc_node_track_caller_noprof(kmem_buckets *b, size_t size, gfp_t flags, int node, unsigned long caller) { - return __do_kmalloc_node(size, flags, node, caller); + return __do_kmalloc_node(b, size, flags, node, caller); } EXPORT_SYMBOL(kmalloc_node_track_caller_noprof); diff --git a/mm/util.c b/mm/util.c index c9e519e6811f..80430e5ba981 100644 --- a/mm/util.c +++ b/mm/util.c @@ -128,7 +128,7 @@ void *kmemdup_noprof(const void *src, size_t len, gfp_t gfp) { void *p; - p = kmalloc_node_track_caller_noprof(len, gfp, NUMA_NO_NODE, _RET_IP_); + p = kmalloc_node_track_caller_noprof(NULL, len, gfp, NUMA_NO_NODE, _RET_IP_); if (p) memcpy(p, src, len); return p; -- 2.34.1