]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Aug 2020 16:29:38 +0000 (18:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Aug 2020 16:29:38 +0000 (18:29 +0200)
added patches:
tracepoint-mark-__tracepoint_string-s-__used.patch

queue-4.19/tracepoint-mark-__tracepoint_string-s-__used.patch [new file with mode: 0644]

diff --git a/queue-4.19/tracepoint-mark-__tracepoint_string-s-__used.patch b/queue-4.19/tracepoint-mark-__tracepoint_string-s-__used.patch
new file mode 100644 (file)
index 0000000..51415df
--- /dev/null
@@ -0,0 +1,50 @@
+From f3751ad0116fb6881f2c3c957d66a9327f69cefb Mon Sep 17 00:00:00 2001
+From: Nick Desaulniers <ndesaulniers@google.com>
+Date: Thu, 30 Jul 2020 15:45:54 -0700
+Subject: tracepoint: Mark __tracepoint_string's __used
+
+From: Nick Desaulniers <ndesaulniers@google.com>
+
+commit f3751ad0116fb6881f2c3c957d66a9327f69cefb upstream.
+
+__tracepoint_string's have their string data stored in .rodata, and an
+address to that data stored in the "__tracepoint_str" section. Functions
+that refer to those strings refer to the symbol of the address. Compiler
+optimization can replace those address references with references
+directly to the string data. If the address doesn't appear to have other
+uses, then it appears dead to the compiler and is removed. This can
+break the /tracing/printk_formats sysfs node which iterates the
+addresses stored in the "__tracepoint_str" section.
+
+Like other strings stored in custom sections in this header, mark these
+__used to inform the compiler that there are other non-obvious users of
+the address, so they should still be emitted.
+
+Link: https://lkml.kernel.org/r/20200730224555.2142154-2-ndesaulniers@google.com
+
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
+Cc: stable@vger.kernel.org
+Fixes: 102c9323c35a8 ("tracing: Add __tracepoint_string() to export string pointers")
+Reported-by: Tim Murray <timmurray@google.com>
+Reported-by: Simon MacMullen <simonmacm@google.com>
+Suggested-by: Greg Hackmann <ghackmann@google.com>
+Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ include/linux/tracepoint.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/tracepoint.h
++++ b/include/linux/tracepoint.h
+@@ -364,7 +364,7 @@ static inline struct tracepoint *tracepo
+               static const char *___tp_str __tracepoint_string = str; \
+               ___tp_str;                                              \
+       })
+-#define __tracepoint_string   __attribute__((section("__tracepoint_str")))
++#define __tracepoint_string   __attribute__((section("__tracepoint_str"), used))
+ #else
+ /*
+  * tracepoint_string() is used to save the string address for userspace