]> pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
function-graph: allow unregistering twice
authorSteven Rostedt <srostedt@redhat.com>
Mon, 30 Mar 2009 15:11:28 +0000 (11:11 -0400)
committerIngo Molnar <mingo@elte.hu>
Wed, 1 Apr 2009 12:47:42 +0000 (14:47 +0200)
Impact: fix to permanent disabling of function graph tracer

There should be nothing to prevent a tracer from unregistering a
function graph callback more than once. This can simplify error paths.

But currently, the counter does not account for mulitple unregistering
of the function graph callback. If it happens, the function graph
tracer will be permanently disabled.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/ftrace.c

index 1752a63f37c02d535b961a68efa20313cb147faf..f1ed080406c31f6bf61025e34e626f71b2865ad6 100644 (file)
@@ -2719,6 +2719,9 @@ void unregister_ftrace_graph(void)
 {
        mutex_lock(&ftrace_lock);
 
+       if (!unlikely(atomic_read(&ftrace_graph_active)))
+               goto out;
+
        atomic_dec(&ftrace_graph_active);
        unregister_trace_sched_switch(ftrace_graph_probe_sched_switch);
        ftrace_graph_return = (trace_func_graph_ret_t)ftrace_stub;
@@ -2726,6 +2729,7 @@ void unregister_ftrace_graph(void)
        ftrace_shutdown(FTRACE_STOP_FUNC_RET);
        unregister_pm_notifier(&ftrace_suspend_notifier);
 
+ out:
        mutex_unlock(&ftrace_lock);
 }