aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2009-11-25 03:32:21 -0500
committerIngo Molnar <mingo@elte.hu>2009-11-27 00:43:04 -0500
commitabab9d37d2a826fcf588c5f30152dbe05c40111c (patch)
treecc4bbdafb5dbf1883d714c1a650c5cc03f83512b
parent0f1ef51d244809f417bdf45cdb00109fb6005672 (diff)
trace_kprobes: Fix memory leak
tp->nr_args is not set before we "goto error", it causes memory leak for free_trace_probe() use tp->nr_args to free memory of args. Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Acked-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <4B0CEB95.2060107@cn.fujitsu.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--kernel/trace/trace_kprobe.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 79ce6a2bd74f..82e85836d05e 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -704,10 +704,12 @@ static int create_trace_probe(int argc, char **argv)
704 ret = parse_probe_arg(arg, &tp->args[i].fetch, is_return); 704 ret = parse_probe_arg(arg, &tp->args[i].fetch, is_return);
705 if (ret) { 705 if (ret) {
706 pr_info("Parse error at argument%d. (%d)\n", i, ret); 706 pr_info("Parse error at argument%d. (%d)\n", i, ret);
707 kfree(tp->args[i].name);
707 goto error; 708 goto error;
708 } 709 }
710
711 tp->nr_args++;
709 } 712 }
710 tp->nr_args = i;
711 713
712 ret = register_trace_probe(tp); 714 ret = register_trace_probe(tp);
713 if (ret) 715 if (ret)