Thread (21 messages) 21 messages, 4 authors, 2024-08-23

Re: [BUG] tracing: dynamic ftrace selftest detected failures

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2024-08-21 15:49:33
Also in: lkml, llvm
Subsystem: the rest, tracing · Maintainers: Linus Torvalds, Steven Rostedt, Masami Hiramatsu

On Wed, 21 Aug 2024 16:42:07 +0100
Mark Rutland [off-list ref] wrote:
FWIW, that was in samples/ftrace/ftrace-ops.c, where tracee_relevant() and
tracee_irrelevant() have the barrier():

| /*
|  * Marked as noinline to ensure that an out-of-line traceable copy is
|  * generated by the compiler.
|  *
|  * The barrier() ensures the compiler won't elide calls by determining there
|  * are no side-effects.
|  */
| static noinline void tracee_relevant(void)
| {
|         barrier();
| }

... so we already have precedent for that in tracing code.
If adding a barrier() fixes things, then I'm 100% for adding them.

Masami, does this fix it?

-- Steve
diff --git a/kernel/trace/trace_selftest_dynamic.c b/kernel/trace/trace_selftest_dynamic.c
index c364cf777e1a..a112433d78ce 100644
--- a/kernel/trace/trace_selftest_dynamic.c
+++ b/kernel/trace/trace_selftest_dynamic.c
@@ -4,12 +4,20 @@
 
 noinline __noclone int DYN_FTRACE_TEST_NAME(void)
 {
-	/* used to call mcount */
+	/*
+	 * Used to test function tracing. Make sure the compiler doesn't
+	 * remove it.
+	 */
+	barrier();
 	return 0;
 }
 
 noinline __noclone int DYN_FTRACE_TEST_NAME2(void)
 {
-	/* used to call mcount */
+	/*
+	 * Used to test function tracing. Make sure the compiler doesn't
+	 * remove it.
+	 */
+	barrier();
 	return 0;
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help