lttng-modules v0.19-stable: setup_trace_write: Fix recursive locking v0.19-stable
authorJuha Niskanen <juha_niskanen@mentor.com>
Fri, 25 Nov 2011 21:59:56 +0000 (16:59 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 25 Nov 2011 21:59:56 +0000 (16:59 -0500)
lttng-modules: ltt_trace_destroy calls ltt_lock_traces internally so
this non-recursive mutex must be first unlocked when executing error
handling code.

Signed-off-by: Juha Niskanen <juha_niskanen@mentor.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
ltt-trace-control.c

index 9d6d239b49c23cc8c1920aa65b74deecf359c697..12a3f194c0fa3fcf32748db9373205709f5c58dc 100644 (file)
@@ -734,6 +734,8 @@ ssize_t setup_trace_write(struct file *file, const char __user *user_buf,
        if (IS_ERR_VALUE(err)) {
                printk(KERN_ERR "setup_trace_write: "
                       "_create_trace_control_dir failed: %d\n", err);
+               ltt_unlock_traces();
+               ltt_trace_destroy(trace_name);
                goto err_create_trace_control_dir;
        }
 
@@ -744,10 +746,9 @@ ssize_t setup_trace_write(struct file *file, const char __user *user_buf,
        free_page((unsigned long)trace_name);
        return count;
 
-err_create_trace_control_dir:
-       ltt_trace_destroy(trace_name);
 err_setup_trace:
        ltt_unlock_traces();
+err_create_trace_control_dir:
        mutex_unlock(&control_lock);
 err_get_tracename:
 err_copy_from_user:
This page took 0.027027 seconds and 4 git commands to generate.