On Tue, 30 Jul 2019 22:08:50 +0800
Changbin Du <[email protected]> wrote:

> We already have tested it before. The second one should be removed.
> With this change, the performance should have little improvement.
> 
> Fixes: 9cd2992f2d6c ("fgraph: Have set_graph_notrace only affect 
> function_graph tracer")

Thanks! I think this should even be marked for stable. Not really a bad
bug, but a bug none the less.

-- Steve


> Signed-off-by: Changbin Du <[email protected]>
> ---
>  kernel/trace/trace_functions_graph.c | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/kernel/trace/trace_functions_graph.c 
> b/kernel/trace/trace_functions_graph.c
> index 69ebf3c2f1b5..78af97163147 100644
> --- a/kernel/trace/trace_functions_graph.c
> +++ b/kernel/trace/trace_functions_graph.c
> @@ -137,6 +137,13 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
>       if (trace_recursion_test(TRACE_GRAPH_NOTRACE_BIT))
>               return 0;
>  
> +     /*
> +      * Do not trace a function if it's filtered by set_graph_notrace.
> +      * Make the index of ret stack negative to indicate that it should
> +      * ignore further functions.  But it needs its own ret stack entry
> +      * to recover the original index in order to continue tracing after
> +      * returning from the function.
> +      */
>       if (ftrace_graph_notrace_addr(trace->func)) {
>               trace_recursion_set(TRACE_GRAPH_NOTRACE_BIT);
>               /*
> @@ -155,16 +162,6 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
>       if (ftrace_graph_ignore_irqs())
>               return 0;
>  
> -     /*
> -      * Do not trace a function if it's filtered by set_graph_notrace.
> -      * Make the index of ret stack negative to indicate that it should
> -      * ignore further functions.  But it needs its own ret stack entry
> -      * to recover the original index in order to continue tracing after
> -      * returning from the function.
> -      */
> -     if (ftrace_graph_notrace_addr(trace->func))
> -             return 1;
> -
>       /*
>        * Stop here if tracing_threshold is set. We only write function return
>        * events to the ring buffer.

Reply via email to