From: Masami Hiramatsu (Google) <mhira...@kernel.org>

In __trace_kprobe_create(), if something fails it must goto error block
to free objects. But when strdup() a symbol, it returns without that.
Fix it to goto the error block to free objects correctly.

Fixes: 6212dd29683e ("tracing/kprobes: Use dyn_event framework for kprobe 
events")
Signed-off-by: Masami Hiramatsu (Google) <mhira...@kernel.org>
---
 kernel/trace/trace_kprobe.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 263fac44d3ca..fb9d4dffa66e 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -940,8 +940,10 @@ static int __trace_kprobe_create(int argc, const char 
*argv[])
                }
                /* a symbol specified */
                symbol = kstrdup(argv[1], GFP_KERNEL);
-               if (!symbol)
-                       return -ENOMEM;
+               if (!symbol) {
+                       ret = -ENOMEM;
+                       goto error;
+               }
 
                tmp = strchr(symbol, '%');
                if (tmp) {


Reply via email to