]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Jul 2024 06:21:38 +0000 (08:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Jul 2024 06:21:38 +0000 (08:21 +0200)
added patches:
compiler-attributes-add-__uninitialized-macro.patch

queue-5.4/compiler-attributes-add-__uninitialized-macro.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/compiler-attributes-add-__uninitialized-macro.patch b/queue-5.4/compiler-attributes-add-__uninitialized-macro.patch
new file mode 100644 (file)
index 0000000..b7c50bc
--- /dev/null
@@ -0,0 +1,50 @@
+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
+  */
index b92d491ad747a452f16a45a09857145c01cecce0..00ccc9e199dfa83fe2b8a9e99498ac0780eaf91c 100644 (file)
@@ -1,3 +1,4 @@
+compiler-attributes-add-__uninitialized-macro.patch
 drm-lima-fix-shared-irq-handling-on-driver-remove.patch
 media-dvb-as102-fe-fix-as10x_register_addr-packing.patch
 media-dvb-usb-dib0700_devices-add-missing-release_fi.patch