Re: powerpc ftrace broken due to "manual merge of the ftrace tree with the arm64 tree"

From: Steven Rostedt
Date: Mon Nov 18 2019 - 10:16:51 EST


On Mon, 18 Nov 2019 09:58:42 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> On Mon, 18 Nov 2019 09:51:04 -0500
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> > > > Test this commit please: b83b43ffc6e4b514ca034a0fbdee01322e2f7022
> > >
> > > # git reset --hard b83b43ffc6e4b514ca034a0fbdee01322e2f7022
> > >
> > > Yes, that one is bad.
> >
> > Can you see if this patch fixes the issue for you?
>
> Don't bother. This isn't the right fix, I know see the real issue.
>
> New fix coming shortly.
>

Can you try this?

It appears that I picked a name "ftrace_graph_stub", that was already in
use by powerpc. This just renames the function stub I used.

-- Steve

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 0f358be551cd..996db32c491b 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -112,7 +112,7 @@
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
#ifdef CC_USING_PATCHABLE_FUNCTION_ENTRY
/*
- * Need to also make ftrace_graph_stub point to ftrace_stub
+ * Need to also make ftrace_stub_graph point to ftrace_stub
* so that the same stub location may have different protocols
* and not mess up with C verifiers.
*/
@@ -120,17 +120,17 @@
__start_mcount_loc = .; \
KEEP(*(__patchable_function_entries)) \
__stop_mcount_loc = .; \
- ftrace_graph_stub = ftrace_stub;
+ ftrace_stub_graph = ftrace_stub;
#else
#define MCOUNT_REC() . = ALIGN(8); \
__start_mcount_loc = .; \
KEEP(*(__mcount_loc)) \
__stop_mcount_loc = .; \
- ftrace_graph_stub = ftrace_stub;
+ ftrace_stub_graph = ftrace_stub;
#endif
#else
# ifdef CONFIG_FUNCTION_TRACER
-# define MCOUNT_REC() ftrace_graph_stub = ftrace_stub;
+# define MCOUNT_REC() ftrace_stub_graph = ftrace_stub;
# else
# define MCOUNT_REC()
# endif
diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c
index fa3ce10d0405..67e0c462b059 100644
--- a/kernel/trace/fgraph.c
+++ b/kernel/trace/fgraph.c
@@ -336,10 +336,10 @@ int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
* Simply points to ftrace_stub, but with the proper protocol.
* Defined by the linker script in linux/vmlinux.lds.h
*/
-extern void ftrace_graph_stub(struct ftrace_graph_ret *);
+extern void ftrace_stub_graph(struct ftrace_graph_ret *);

/* The callbacks that hook a function */
-trace_func_graph_ret_t ftrace_graph_return = ftrace_graph_stub;
+trace_func_graph_ret_t ftrace_graph_return = ftrace_stub_graph;
trace_func_graph_ent_t ftrace_graph_entry = ftrace_graph_entry_stub;
static trace_func_graph_ent_t __ftrace_graph_entry = ftrace_graph_entry_stub;

@@ -619,7 +619,7 @@ void unregister_ftrace_graph(struct fgraph_ops *gops)
goto out;

ftrace_graph_active--;
- ftrace_graph_return = ftrace_graph_stub;
+ ftrace_graph_return = ftrace_stub_graph;
ftrace_graph_entry = ftrace_graph_entry_stub;
__ftrace_graph_entry = ftrace_graph_entry_stub;
ftrace_shutdown(&graph_ops, FTRACE_STOP_FUNC_RET);