* [PATCH] libtracefs: Fix various memory issues
@ 2022-02-23 6:13 Steven Rostedt
0 siblings, 0 replies; only message in thread
From: Steven Rostedt @ 2022-02-23 6:13 UTC (permalink / raw)
To: Linux Trace Devel
From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
Running "make test_mem" which calls valgrind on the unit tests, uncovered
various issues with allocations, initialization and freeing.
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
src/tracefs-dynevents.c | 3 ++-
src/tracefs-hist.c | 2 ++
src/tracefs-sqlhist.c | 2 +-
src/tracefs-utils.c | 10 ++++------
utest/tracefs-utest.c | 2 ++
5 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/tracefs-dynevents.c b/src/tracefs-dynevents.c
index ddebb6bb68b0..61804b9d9d5e 100644
--- a/src/tracefs-dynevents.c
+++ b/src/tracefs-dynevents.c
@@ -120,7 +120,7 @@ static int dyn_generic_parse(struct dyn_events_desc *desc, const char *group,
struct tracefs_dynevent *dyn;
char *word;
char *format = NULL;
- char *address;
+ char *address = NULL;
char *system;
char *prefix;
char *event;
@@ -582,6 +582,7 @@ tracefs_dynevent_get_all(unsigned int types, const char *system)
all += count;
/* Add a NULL pointer at the end */
all_events[all] = NULL;
+ free(events);
}
}
diff --git a/src/tracefs-hist.c b/src/tracefs-hist.c
index aec61ad52e72..96eb63338d02 100644
--- a/src/tracefs-hist.c
+++ b/src/tracefs-hist.c
@@ -745,12 +745,14 @@ void tracefs_synth_free(struct tracefs_synth *synth)
free(synth->end_hist);
tracefs_list_free(synth->synthetic_fields);
tracefs_list_free(synth->synthetic_args);
+ tracefs_list_free(synth->start_selection);
tracefs_list_free(synth->start_keys);
tracefs_list_free(synth->end_keys);
tracefs_list_free(synth->start_vars);
tracefs_list_free(synth->end_vars);
free(synth->start_filter);
free(synth->end_filter);
+ free(synth->start_type);
tep_unref(synth->tep);
diff --git a/src/tracefs-sqlhist.c b/src/tracefs-sqlhist.c
index 016f3eb23725..63f8ddf71103 100644
--- a/src/tracefs-sqlhist.c
+++ b/src/tracefs-sqlhist.c
@@ -1538,7 +1538,7 @@ static void free_sql_table(struct sql_table *table)
return;
while ((expr = table->exprs)) {
- table->exprs = expr->next;
+ table->exprs = expr->free_list;
free(expr);
}
diff --git a/src/tracefs-utils.c b/src/tracefs-utils.c
index a502c2dec736..35f25ef6bddf 100644
--- a/src/tracefs-utils.c
+++ b/src/tracefs-utils.c
@@ -183,18 +183,16 @@ const char *tracefs_tracing_dir(void)
*/
char *tracefs_get_tracing_file(const char *name)
{
- static const char *tracing;
+ const char *tracing;
char *file;
int ret;
if (!name)
return NULL;
- if (!tracing) {
- tracing = trace_find_tracing_dir();
- if (!tracing)
- return NULL;
- }
+ tracing = tracefs_tracing_dir();
+ if (!tracing)
+ return NULL;
ret = asprintf(&file, "%s/%s", tracing, name);
if (ret < 0)
diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c
index e8d5c6981ef2..09032438f425 100644
--- a/utest/tracefs-utest.c
+++ b/utest/tracefs-utest.c
@@ -430,6 +430,8 @@ static void test_synth_compare(struct test_synth *synth, struct tracefs_dynevent
if (synth[i].match_name) {
CU_TEST(strstr(format, synth[i].match_name) != NULL);
}
+ free(event);
+ free(format);
}
CU_TEST(devents[i] == NULL);
}
--
2.34.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2022-02-23 6:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-23 6:13 [PATCH] libtracefs: Fix various memory issues Steven Rostedt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).