[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210413203716.339a87ee@gandalf.local.home>
Date: Tue, 13 Apr 2021 20:37:16 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: LKML <linux-kernel@...r.kernel.org>,
Christophe JAILLET <christophe.jaillet@...adoo.fr>,
Ingo Molnar <mingo@...nel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Masami Hiramatsu <mhiramat@...nel.org>
Subject: [GIT PULL] tracing/dynevent: Fix a memory leak in an error handling
path
Christophe JAILLET <christophe.jaillet@...adoo.fr>
Linus,
tracing/dynevent: Fix a memory link in dyn_event_release()
An error path exited the function before freeing the allocated
"argv" variable.
Please pull the latest trace-v5.12-rc7 tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
trace-v5.12-rc7
Tag SHA1: 682c26c6e8cf02be8c898a712bbd5ffd75c83616
Head SHA1: 8db403b9631331ef1d5e302cdf353c48849ca9d5
Christophe JAILLET (1):
tracing/dynevent: Fix a memory leak in an error handling path
----
kernel/trace/trace_dynevent.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
---------------------------
commit 8db403b9631331ef1d5e302cdf353c48849ca9d5
Author: Christophe JAILLET <christophe.jaillet@...adoo.fr>
Date: Sun Apr 11 12:21:54 2021 +0200
tracing/dynevent: Fix a memory leak in an error handling path
We must free 'argv' before returning, as already done in all the other
paths of this function.
Link: https://lkml.kernel.org/r/21e3594ccd7fc88c5c162c98450409190f304327.1618136448.git.christophe.jaillet@wanadoo.fr
Fixes: d262271d0483 ("tracing/dynevent: Delegate parsing to create function")
Acked-by: Masami Hiramatsu <mhiramat@...nel.org>
Signed-off-by: Christophe JAILLET <christophe.jaillet@...adoo.fr>
Signed-off-by: Steven Rostedt (VMware) <rostedt@...dmis.org>
diff --git a/kernel/trace/trace_dynevent.c b/kernel/trace/trace_dynevent.c
index dc971a68dda4..e57cc0870892 100644
--- a/kernel/trace/trace_dynevent.c
+++ b/kernel/trace/trace_dynevent.c
@@ -63,8 +63,10 @@ int dyn_event_release(const char *raw_command, struct dyn_event_operations *type
event = p + 1;
*p = '\0';
}
- if (event[0] == '\0')
- return -EINVAL;
+ if (event[0] == '\0') {
+ ret = -EINVAL;
+ goto out;
+ }
mutex_lock(&event_mutex);
for_each_dyn_event_safe(pos, n) {
Powered by blists - more mailing lists