Re: ftrace_graph_filter not working correctly since v4.10

From: Steven Rostedt
Date: Thu Mar 02 2017 - 12:50:26 EST


On Wed, 1 Mar 2017 22:47:30 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> On Wed, 1 Mar 2017 22:28:43 -0500
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> >
> > 4.10 is fine. It's what has been merged for 4.11 that's broken. I'm
> > doing a bisect now to see what broke it. Yes, lots of commits touched
> > that code recently.
>
> I found the bad commit. I'll have a patch for you to test tomorrow.
>

Can you test this patch please.

-- Steve

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 2d554a0..1b33a41 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4403,10 +4403,9 @@ static void __init set_ftrace_early_graph(char *buf, int enable)
char *func;
struct ftrace_hash *hash;

- if (enable)
- hash = ftrace_graph_hash;
- else
- hash = ftrace_graph_notrace_hash;
+ hash = alloc_ftrace_hash(FTRACE_HASH_DEFAULT_BITS);
+ if (WARN_ON(!hash))
+ return;

while (buf) {
func = strsep(&buf, ",");
@@ -4416,6 +4415,11 @@ static void __init set_ftrace_early_graph(char *buf, int enable)
printk(KERN_DEBUG "ftrace: function %s not "
"traceable\n", func);
}
+
+ if (enable)
+ ftrace_graph_hash = hash;
+ else
+ ftrace_graph_notrace_hash = hash;
}
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */