Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

compiler_types: Disable __builtin_counted_by_ref for Clang

Unfortunately, there is a corner case of __builtin_counted_by_ref()
usage that crashes[1] Clang since support was introduced in Clang 19.
Disable it prior to Clang 22. Found while tested kmalloc_obj treewide
refactoring (via kmalloc_flex() usage).

Link: https://github.com/llvm/llvm-project/issues/182575 [1]
Signed-off-by: Kees Cook <kees@kernel.org>

Kees Cook d39a1d74 d79526b8

+7 -1
+2 -1
include/linux/compiler_types.h
··· 552 552 * gcc: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-_005f_005fbuiltin_005fcounted_005fby_005fref 553 553 * clang: https://clang.llvm.org/docs/LanguageExtensions.html#builtin-counted-by-ref 554 554 */ 555 - #if __has_builtin(__builtin_counted_by_ref) 555 + #if __has_builtin(__builtin_counted_by_ref) && \ 556 + !defined(CONFIG_CC_HAS_BROKEN_COUNTED_BY_REF) 556 557 /** 557 558 * __flex_counter() - Get pointer to counter member for the given 558 559 * flexible array, if it was annotated with __counted_by()
+5
init/Kconfig
··· 150 150 # supported since gcc 16.0.0 151 151 default y if CC_IS_GCC && GCC_VERSION >= 160000 152 152 153 + config CC_HAS_BROKEN_COUNTED_BY_REF 154 + bool 155 + # https://github.com/llvm/llvm-project/issues/182575 156 + default y if CC_IS_CLANG && CLANG_VERSION < 220000 157 + 153 158 config CC_HAS_MULTIDIMENSIONAL_NONSTRING 154 159 def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 155 160