From: Greg Kroah-Hartman Date: Tue, 17 Nov 2020 12:07:17 +0000 (+0100) Subject: drop queue-5.9/compiler.h-fix-barrier_data-on-clang.patch X-Git-Tag: v4.4.244~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b2f1fd3279297145c880dec6a0348953e7c3243c;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-5.9/compiler.h-fix-barrier_data-on-clang.patch --- diff --git a/queue-5.9/compiler.h-fix-barrier_data-on-clang.patch b/queue-5.9/compiler.h-fix-barrier_data-on-clang.patch deleted file mode 100644 index 1e477279fa4..00000000000 --- a/queue-5.9/compiler.h-fix-barrier_data-on-clang.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 3347acc6fcd4ee71ad18a9ff9d9dac176b517329 Mon Sep 17 00:00:00 2001 -From: Arvind Sankar -Date: Fri, 13 Nov 2020 22:51:59 -0800 -Subject: compiler.h: fix barrier_data() on clang - -From: Arvind Sankar - -commit 3347acc6fcd4ee71ad18a9ff9d9dac176b517329 upstream. - -Commit 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h -mutually exclusive") neglected to copy barrier_data() from -compiler-gcc.h into compiler-clang.h. - -The definition in compiler-gcc.h was really to work around clang's more -aggressive optimization, so this broke barrier_data() on clang, and -consequently memzero_explicit() as well. - -For example, this results in at least the memzero_explicit() call in -lib/crypto/sha256.c:sha256_transform() being optimized away by clang. - -Fix this by moving the definition of barrier_data() into compiler.h. - -Also move the gcc/clang definition of barrier() into compiler.h, -__memory_barrier() is icc-specific (and barrier() is already defined -using it in compiler-intel.h) and doesn't belong in compiler.h. - -[rdunlap@infradead.org: fix ALPHA builds when SMP is not enabled] - -Link: https://lkml.kernel.org/r/20201101231835.4589-1-rdunlap@infradead.org -Fixes: 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually exclusive") -Signed-off-by: Arvind Sankar -Signed-off-by: Randy Dunlap -Signed-off-by: Andrew Morton -Tested-by: Nick Desaulniers -Reviewed-by: Nick Desaulniers -Reviewed-by: Kees Cook -Cc: -Link: https://lkml.kernel.org/r/20201014212631.207844-1-nivedita@alum.mit.edu -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman - ---- - include/asm-generic/barrier.h | 1 + - include/linux/compiler-clang.h | 6 ------ - include/linux/compiler-gcc.h | 19 ------------------- - include/linux/compiler.h | 18 ++++++++++++++++-- - 4 files changed, 17 insertions(+), 27 deletions(-) - ---- a/include/asm-generic/barrier.h -+++ b/include/asm-generic/barrier.h -@@ -13,6 +13,7 @@ - - #ifndef __ASSEMBLY__ - -+#include - #include - - #ifndef nop ---- a/include/linux/compiler-clang.h -+++ b/include/linux/compiler-clang.h -@@ -52,12 +52,6 @@ - #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1 - #endif - --/* The following are for compatibility with GCC, from compiler-gcc.h, -- * and may be redefined here because they should not be shared with other -- * compilers, like ICC. -- */ --#define barrier() __asm__ __volatile__("" : : : "memory") -- - #if __has_feature(shadow_call_stack) - # define __noscs __attribute__((__no_sanitize__("shadow-call-stack"))) - #endif ---- a/include/linux/compiler-gcc.h -+++ b/include/linux/compiler-gcc.h -@@ -15,25 +15,6 @@ - # error Sorry, your compiler is too old - please upgrade it. - #endif - --/* Optimization barrier */ -- --/* The "volatile" is due to gcc bugs */ --#define barrier() __asm__ __volatile__("": : :"memory") --/* -- * This version is i.e. to prevent dead stores elimination on @ptr -- * where gcc and llvm may behave differently when otherwise using -- * normal barrier(): while gcc behavior gets along with a normal -- * barrier(), llvm needs an explicit input variable to be assumed -- * clobbered. The issue is as follows: while the inline asm might -- * access any memory it wants, the compiler could have fit all of -- * @ptr into memory registers instead, and since @ptr never escaped -- * from that, it proved that the inline asm wasn't touching any of -- * it. This version works well with both compilers, i.e. we're telling -- * the compiler that the inline asm absolutely may see the contents -- * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 -- */ --#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") -- - /* - * This macro obfuscates arithmetic on a variable address so that gcc - * shouldn't recognize the original var, and make assumptions about it. ---- a/include/linux/compiler.h -+++ b/include/linux/compiler.h -@@ -80,11 +80,25 @@ void ftrace_likely_update(struct ftrace_ - - /* Optimization barrier */ - #ifndef barrier --# define barrier() __memory_barrier() -+/* The "volatile" is due to gcc bugs */ -+# define barrier() __asm__ __volatile__("": : :"memory") - #endif - - #ifndef barrier_data --# define barrier_data(ptr) barrier() -+/* -+ * This version is i.e. to prevent dead stores elimination on @ptr -+ * where gcc and llvm may behave differently when otherwise using -+ * normal barrier(): while gcc behavior gets along with a normal -+ * barrier(), llvm needs an explicit input variable to be assumed -+ * clobbered. The issue is as follows: while the inline asm might -+ * access any memory it wants, the compiler could have fit all of -+ * @ptr into memory registers instead, and since @ptr never escaped -+ * from that, it proved that the inline asm wasn't touching any of -+ * it. This version works well with both compilers, i.e. we're telling -+ * the compiler that the inline asm absolutely may see the contents -+ * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 -+ */ -+# define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") - #endif - - /* workaround for GCC PR82365 if needed */ diff --git a/queue-5.9/series b/queue-5.9/series index aaa2127f700..c84ccdef7a5 100644 --- a/queue-5.9/series +++ b/queue-5.9/series @@ -211,7 +211,6 @@ mm-compaction-stop-isolation-if-too-many-pages-are-isolated-and-we-have-pages-to mm-slub-fix-panic-in-slab_alloc_node.patch mm-vmscan-fix-nr_isolated_file-corruption-on-64-bit.patch mm-gup-use-unpin_user_pages-in-__gup_longterm_locked.patch -compiler.h-fix-barrier_data-on-clang.patch revert-kernel-reboot.c-convert-simple_strtoul-to-kstrtoint.patch reboot-fix-overflow-parsing-reboot-cpu-number.patch hugetlbfs-fix-anon-huge-page-migration-race.patch