tracing: Fix failure path in ftrace_graph_write()

Don't call trace_parser_put() on uninitialized trace_parser.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4AB86639.3000003@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Li Zefan 2009-09-22 13:52:57 +08:00 committed by Ingo Molnar
parent 4ba7978e98
commit 1eb90f138b

View File

@ -2561,12 +2561,12 @@ ftrace_graph_write(struct file *file, const char __user *ubuf,
if (ftrace_graph_count >= FTRACE_GRAPH_MAX_FUNCS) { if (ftrace_graph_count >= FTRACE_GRAPH_MAX_FUNCS) {
ret = -EBUSY; ret = -EBUSY;
goto out; goto out_unlock;
} }
if (trace_parser_get_init(&parser, FTRACE_BUFF_MAX)) { if (trace_parser_get_init(&parser, FTRACE_BUFF_MAX)) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out_unlock;
} }
read = trace_get_user(&parser, ubuf, cnt, ppos); read = trace_get_user(&parser, ubuf, cnt, ppos);
@ -2578,12 +2578,14 @@ ftrace_graph_write(struct file *file, const char __user *ubuf,
ret = ftrace_set_func(ftrace_graph_funcs, &ftrace_graph_count, ret = ftrace_set_func(ftrace_graph_funcs, &ftrace_graph_count,
parser.buffer); parser.buffer);
if (ret) if (ret)
goto out; goto out_free;
} }
ret = read; ret = read;
out:
out_free:
trace_parser_put(&parser); trace_parser_put(&parser);
out_unlock:
mutex_unlock(&graph_lock); mutex_unlock(&graph_lock);
return ret; return ret;