Re: [PATCH 3/9] ftrace: Fix shutdown to disable calls properly

From: Steven Rostedt
Date: Mon Nov 28 2011 - 14:18:51 EST


On Sun, 2011-11-27 at 19:04 +0100, Jiri Olsa wrote:
> Each ftrace_startup call increases the call record's flag,
> so we need allways to decrease it when shutting down the
> ftrace_ops.

No, that's not how this works. I probably should comment this code
better, because it caused me to reread it too ;)

>
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> ---
> kernel/trace/ftrace.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index c6d0293..0ca0c0d 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -1744,8 +1744,7 @@ static void ftrace_shutdown(struct ftrace_ops *ops, int command)
> if (ops != &global_ops || !global_start_up)
> ops->flags &= ~FTRACE_OPS_FL_ENABLED;
>
> - if (!ftrace_start_up)
> - command |= FTRACE_DISABLE_CALLS;
> + command |= FTRACE_DISABLE_CALLS;

FTRACE_DISABLE_CALLS will disable *all* functions for all tracers. If
you are tracing with ftrace and perf, and one calls this with
FTRACE_DISABLE_CALLS then both will no long be tracing anything.

When you call unregister_ftrace_function() it will disable the functions
that you have enabled by the ops.

Nacked-by: Steven Rostedt <rostedt@xxxxxxxxxxxx

-- Steve


>
> if (saved_ftrace_func != ftrace_trace_function) {
> saved_ftrace_func = ftrace_trace_function;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/