* + mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch added to -mm tree
@ 2021-06-15 2:07 akpm
0 siblings, 0 replies; only message in thread
From: akpm @ 2021-06-15 2:07 UTC (permalink / raw)
To: 42.hyeyoo, cl, elver, iamjoonsoo.kim, lkp, mm-commits, penberg,
rientjes, vbabka
The patch titled
Subject: mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3
has been added to the -mm tree. Its filename is
mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch
This patch should soon appear at
https://ozlabs.org/~akpm/mmots/broken-out/mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch
and later at
https://ozlabs.org/~akpm/mmotm/broken-out/mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Vlastimil Babka <vbabka@suse.cz>
Subject: mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3
Kernel test robot reports a false-positive compile-time assert while compiling
kernel/bpf/local_storage.c
In file included from <command-line>:
In function 'kmalloc_index',
inlined from 'kmalloc_node' at include/linux/slab.h:572:20,
inlined from 'bpf_map_kmalloc_node.isra.0.part.0' at include/linux/bpf.h:1319:9:
>> >> include/linux/compiler_types.h:328:38: error: call to '__compiletime_assert_183' declared with attribute error: unexpected size in kmalloc_index()
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:309:4: note: in definition of macro '__compiletime_assert'
309 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/slab.h:389:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
389 | BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()");
| ^~~~~~~~~~~~~~~~
This only happens with CONFIG_PROFILE_ALL_BRANCHES enabled. Informal
conversation with gcc developers suggest that this config pushes the
optimizer to a corner case where in kmalloc_node() the 'size' is
considered a builtin-constant and thus kmalloc_index() is chosen, but
later in kmalloc_index() the notion of compile-time constant is lost and
thus the compiletime assert becomes reachable.
While there's plan to submit a proper gcc bug report with reduced
testcase, for now add CONFIG_PROFILE_ALL_BRANCHES to the list of
situations where we keep using the runtime BUG_ON() instead of
compile-time assert.
This is a 3rd fix for mmotm patch
mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time.patch
[1] https://lore.kernel.org/linux-mm/202106051442.G1VJubTz-lkp@intel.com/
Link: https://lkml.kernel.org/r/bea97388-01df-8eac-091b-a3c89b4a4a09@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reported-by: kernel test robot <lkp@intel.com>
Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Marco Elver <elver@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/slab.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/include/linux/slab.h~mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3
+++ a/include/linux/slab.h
@@ -389,7 +389,8 @@ static __always_inline unsigned int __km
if (size <= 16 * 1024 * 1024) return 24;
if (size <= 32 * 1024 * 1024) return 25;
- if ((IS_ENABLED(CONFIG_CC_IS_GCC) || CONFIG_CLANG_VERSION >= 110000) && size_is_constant)
+ if ((IS_ENABLED(CONFIG_CC_IS_GCC) || CONFIG_CLANG_VERSION >= 110000)
+ && !IS_ENABLED(CONFIG_PROFILE_ALL_BRANCHES) && size_is_constant)
BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()");
else
BUG();
_
Patches currently in -mm which might be from vbabka@suse.cz are
kunit-make-test-lock-irq-safe.patch
mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch
mm-memcg-slab-create-a-new-set-of-kmalloc-cg-n-caches-fix.patch
mm-slub-use-stackdepot-to-save-stack-trace-in-objects-fix-2.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-15 2:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-15 2:07 + mm-slub-change-run-time-assertion-in-kmalloc_index-to-compile-time-fix-3.patch added to -mm tree akpm
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.