--- /dev/null
+From fd7eea27a3aed79b63b1726c00bde0d50cf207e2 Mon Sep 17 00:00:00 2001
+From: Heiko Carstens <hca@linux.ibm.com>
+Date: Mon, 5 Feb 2024 16:48:43 +0100
+Subject: Compiler Attributes: Add __uninitialized macro
+
+From: Heiko Carstens <hca@linux.ibm.com>
+
+commit fd7eea27a3aed79b63b1726c00bde0d50cf207e2 upstream.
+
+With INIT_STACK_ALL_PATTERN or INIT_STACK_ALL_ZERO enabled the kernel will
+be compiled with -ftrivial-auto-var-init=<...> which causes initialization
+of stack variables at function entry time.
+
+In order to avoid the performance impact that comes with this users can use
+the "uninitialized" attribute to prevent such initialization.
+
+Therefore provide the __uninitialized macro which can be used for cases
+where INIT_STACK_ALL_PATTERN or INIT_STACK_ALL_ZERO is enabled, but only
+selected variables should not be initialized.
+
+Acked-by: Kees Cook <keescook@chromium.org>
+Reviewed-by: Nathan Chancellor <nathan@kernel.org>
+Link: https://lore.kernel.org/r/20240205154844.3757121-2-hca@linux.ibm.com
+Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/compiler_attributes.h | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/include/linux/compiler_attributes.h
++++ b/include/linux/compiler_attributes.h
+@@ -265,6 +265,18 @@
+ #define __used __attribute__((__used__))
+
+ /*
++ * Optional: only supported since gcc >= 12
++ *
++ * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-uninitialized-variable-attribute
++ * clang: https://clang.llvm.org/docs/AttributeReference.html#uninitialized
++ */
++#if __has_attribute(__uninitialized__)
++# define __uninitialized __attribute__((__uninitialized__))
++#else
++# define __uninitialized
++#endif
++
++/*
+ * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-weak-function-attribute
+ * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-weak-variable-attribute
+ */