trace_kprobes: Fix memory leak
authorLai Jiangshan <[email protected]>
Wed, 25 Nov 2009 08:32:21 +0000 (16:32 +0800)
committerIngo Molnar <[email protected]>
Fri, 27 Nov 2009 05:43:04 +0000 (06:43 +0100)
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 <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
Cc: Steven Rostedt <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
LKML-Reference: <4B0CEB95.2060107@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <[email protected]>
kernel/trace/trace_kprobe.c

index 79ce6a2bd74fada4009c5c061dc7e8c4c2a16023..82e85836d05ef2fdcc63aee53907ef156e7d1762 100644 (file)
@@ -704,10 +704,12 @@ static int create_trace_probe(int argc, char **argv)
                ret = parse_probe_arg(arg, &tp->args[i].fetch, is_return);
                if (ret) {
                        pr_info("Parse error at argument%d. (%d)\n", i, ret);
+                       kfree(tp->args[i].name);
                        goto error;
                }
+
+               tp->nr_args++;
        }
-       tp->nr_args = i;
 
        ret = register_trace_probe(tp);
        if (ret)