]> err.no Git - linux-2.6/commitdiff
ftrace: fix mutex unlock in trace output
authorSteven Rostedt <srostedt@redhat.com>
Mon, 12 May 2008 19:20:56 +0000 (21:20 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 23 May 2008 19:15:52 +0000 (21:15 +0200)
If the trace output changes on reading the trace files, there is a chance
that the start function will return NULL. If the start function of a sequence
returns NULL the stop equivalent is not called. In this case, all locks
that are taken must be released even if they are released in the stop function.

This patch fixes a case that a mutex was not released on return of NULL
in the start sequence function.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/trace.c

index 3009aafa4dde74252f52ea6043d691b11693add4..ea11f4ebfae1c8e6c9e3b34f4b9d4feecda27fef 100644 (file)
@@ -964,8 +964,10 @@ static void *s_start(struct seq_file *m, loff_t *pos)
 
        mutex_lock(&trace_types_lock);
 
-       if (!current_trace || current_trace != iter->trace)
+       if (!current_trace || current_trace != iter->trace) {
+               mutex_unlock(&trace_types_lock);
                return NULL;
+       }
 
        atomic_inc(&trace_record_cmdline_disabled);