diff options
Diffstat (limited to '6.5/00_all_0003-Compiler-Attributes-counted_by-Adjust-name-and-ident.patch')
-rw-r--r-- | 6.5/00_all_0003-Compiler-Attributes-counted_by-Adjust-name-and-ident.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/6.5/00_all_0003-Compiler-Attributes-counted_by-Adjust-name-and-ident.patch b/6.5/00_all_0003-Compiler-Attributes-counted_by-Adjust-name-and-ident.patch new file mode 100644 index 0000000..7365e3e --- /dev/null +++ b/6.5/00_all_0003-Compiler-Attributes-counted_by-Adjust-name-and-ident.patch @@ -0,0 +1,87 @@ +From 564e31793787789b226a6f4b7081f2647a515b58 Mon Sep 17 00:00:00 2001 +From: Kees Cook <keescook@chromium.org> +Date: Thu, 17 Aug 2023 13:06:03 -0700 +Subject: [PATCH 3/5] Compiler Attributes: counted_by: Adjust name and + identifier expansion + +[ Upstream commit c8248faf3ca276ebdf60f003b3e04bf764daba91 ] + +GCC and Clang's current RFCs name this attribute "counted_by", and have +moved away from using a string for the member name. Update the kernel's +macros to match. Additionally provide a UAPI no-op macro for UAPI structs +that will gain annotations. + +Cc: Miguel Ojeda <ojeda@kernel.org> +Cc: Nick Desaulniers <ndesaulniers@google.com> +Fixes: dd06e72e68bc ("Compiler Attributes: Add __counted_by macro") +Acked-by: Miguel Ojeda <ojeda@kernel.org> +Reviewed-by: Nathan Chancellor <nathan@kernel.org> +Link: https://lore.kernel.org/r/20230817200558.never.077-kees@kernel.org +Signed-off-by: Kees Cook <keescook@chromium.org> +Stable-dep-of: 32a4ec211d41 ("uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++") +Signed-off-by: Sasha Levin <sashal@kernel.org> +(cherry picked from commit cc17adeef726a0df7fe5df7585a07128cd0c6070) +--- + include/linux/compiler_attributes.h | 26 +++++++++++++------------- + include/uapi/linux/stddef.h | 4 ++++ + 2 files changed, 17 insertions(+), 13 deletions(-) + +diff --git a/include/linux/compiler_attributes.h b/include/linux/compiler_attributes.h +index 00efa35c350f..28566624f008 100644 +--- a/include/linux/compiler_attributes.h ++++ b/include/linux/compiler_attributes.h +@@ -94,6 +94,19 @@ + # define __copy(symbol) + #endif + ++/* ++ * Optional: only supported since gcc >= 14 ++ * Optional: only supported since clang >= 18 ++ * ++ * gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 ++ * clang: https://reviews.llvm.org/D148381 ++ */ ++#if __has_attribute(__counted_by__) ++# define __counted_by(member) __attribute__((__counted_by__(member))) ++#else ++# define __counted_by(member) ++#endif ++ + /* + * Optional: not supported by gcc + * Optional: only supported since clang >= 14.0 +@@ -129,19 +142,6 @@ + # define __designated_init + #endif + +-/* +- * Optional: only supported since gcc >= 14 +- * Optional: only supported since clang >= 17 +- * +- * gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 +- * clang: https://reviews.llvm.org/D148381 +- */ +-#if __has_attribute(__element_count__) +-# define __counted_by(member) __attribute__((__element_count__(#member))) +-#else +-# define __counted_by(member) +-#endif +- + /* + * Optional: only supported since clang >= 14.0 + * +diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h +index 7837ba4fe728..7c3fc3980881 100644 +--- a/include/uapi/linux/stddef.h ++++ b/include/uapi/linux/stddef.h +@@ -45,3 +45,7 @@ + TYPE NAME[]; \ + } + #endif ++ ++#ifndef __counted_by ++#define __counted_by(m) ++#endif +-- +2.42.0 + |