summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorKees Cook <kees@kernel.org>2026-02-20 13:15:58 -0800
committerKees Cook <kees@kernel.org>2026-02-21 01:01:14 -0800
commitd39a1d7486d98668dd34aaa6732aad7977c45f5a (patch)
treee3d0917dd485ceaca58f9c557550933a9acb2ab9 /include/linux
parentd79526b89571ae447c1a5cfd3d627efa07098348 (diff)
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>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/compiler_types.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index b1b141394d13..890076d0974b 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -552,7 +552,8 @@ struct ftrace_likely_data {
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-_005f_005fbuiltin_005fcounted_005fby_005fref
* clang: https://clang.llvm.org/docs/LanguageExtensions.html#builtin-counted-by-ref
*/
-#if __has_builtin(__builtin_counted_by_ref)
+#if __has_builtin(__builtin_counted_by_ref) && \
+ !defined(CONFIG_CC_HAS_BROKEN_COUNTED_BY_REF)
/**
* __flex_counter() - Get pointer to counter member for the given
* flexible array, if it was annotated with __counted_by()