mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
perf trace: Add missed freeing of ordered events and thread
Caught by leak sanitizer running "perf trace BTF general tests". Make the ordered_events initialization unconditional and early so that trace__exit cleanup is simple - ordered_events__init doesn't allocate and just sets up 4 values and inits 3 list heads. Signed-off-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20250617223356.2752099-3-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
9a79c50c2a
commit
eda9e47fae
|
|
@ -5361,6 +5361,7 @@ static int trace__config(const char *var, const char *value, void *arg)
|
|||
|
||||
static void trace__exit(struct trace *trace)
|
||||
{
|
||||
thread__zput(trace->current);
|
||||
strlist__delete(trace->ev_qualifier);
|
||||
zfree(&trace->ev_qualifier_ids.entries);
|
||||
if (trace->syscalls.table) {
|
||||
|
|
@ -5371,6 +5372,7 @@ static void trace__exit(struct trace *trace)
|
|||
zfree(&trace->perfconfig_events);
|
||||
evlist__delete(trace->evlist);
|
||||
trace->evlist = NULL;
|
||||
ordered_events__free(&trace->oe.data);
|
||||
#ifdef HAVE_LIBBPF_SUPPORT
|
||||
btf__free(trace->btf);
|
||||
trace->btf = NULL;
|
||||
|
|
@ -5520,6 +5522,9 @@ int cmd_trace(int argc, const char **argv)
|
|||
sigchld_act.sa_sigaction = sighandler_chld;
|
||||
sigaction(SIGCHLD, &sigchld_act, NULL);
|
||||
|
||||
ordered_events__init(&trace.oe.data, ordered_events__deliver_event, &trace);
|
||||
ordered_events__set_copy_on_queue(&trace.oe.data, true);
|
||||
|
||||
trace.evlist = evlist__new();
|
||||
|
||||
if (trace.evlist == NULL) {
|
||||
|
|
@ -5678,11 +5683,6 @@ int cmd_trace(int argc, const char **argv)
|
|||
trace__load_vmlinux_btf(&trace);
|
||||
}
|
||||
|
||||
if (trace.sort_events) {
|
||||
ordered_events__init(&trace.oe.data, ordered_events__deliver_event, &trace);
|
||||
ordered_events__set_copy_on_queue(&trace.oe.data, true);
|
||||
}
|
||||
|
||||
/*
|
||||
* If we are augmenting syscalls, then combine what we put in the
|
||||
* __augmented_syscalls__ BPF map with what is in the
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user