From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ian Rogers <irogers@google.com>,
James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org
Subject: [PATCH] perf c2c: Fix memory leaks on output fields
Date: Wed, 14 Oct 2026 23:48:50 -0700 [thread overview]
Message-ID: <20261015064850.43366-1-namhyung@kernel.org> (raw)
The perf_hpp_list was not freed after use. Let's add it for the main
c2c hists list in perf c2c report and a local list in print_pareto().
Previously it was detected by ASAN like below.
=================================================================
==42183==ERROR: LeakSanitizer: detected memory leaks
Indirect leak of 1064 byte(s) in 7 object(s) allocated from:
#0 0x7f17334ef24f in calloc (/lib64/libasan.so.8+0xef24f) (BuildId: 61e8165ca90f7a4f06b73f064a938c76deaae079)
#1 0x0000005fa099 in zalloc ../../lib/zalloc.c:8
#2 0x0000004faf6d in get_format tools/perf/builtin-c2c.c:1978
#3 0x0000004fb45e in c2c_hists__init_output tools/perf/builtin-c2c.c:2004
#4 0x0000004fb7de in __hpp_list__parse tools/perf/builtin-c2c.c:2047
#5 0x0000004fbae9 in hpp_list__parse tools/perf/builtin-c2c.c:2085
#6 0x0000004fee13 in print_pareto tools/perf/builtin-c2c.c:2563
#7 0x0000004ffcd7 in perf_c2c__hists_fprintf tools/perf/builtin-c2c.c:2708
#8 0x000000500ab5 in perf_c2c_display tools/perf/builtin-c2c.c:2949
#9 0x0000005045c3 in perf_c2c__report tools/perf/builtin-c2c.c:3522
#10 0x000000505caa in cmd_c2c tools/perf/builtin-c2c.c:3676
#11 0x0000005df50e in run_builtin tools/perf/perf.c:383
#12 0x0000005df9b1 in handle_internal_command tools/perf/perf.c:436
#13 0x0000005dfd7f in run_argv tools/perf/perf.c:480
#14 0x0000005e02d6 in main tools/perf/perf.c:581
#15 0x7f1729450680 in __libc_start_call_main (/lib64/libc.so.6+0x3680) (BuildId: 85075e2ae2e13352a1413d41c327dacf6461526c)
#16 0x7f1729450797 in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x3797) (BuildId: 85075e2ae2e13352a1413d41c327dacf6461526c)
#17 0x000000409c34 in _start (tools/perf/perf+0x409c34) (BuildId: 36a64600776d92e4ab7dfd5ca20c92280d72a645)
SUMMARY: AddressSanitizer: 1064 byte(s) leaked in 7 allocation(s).
Fixes: c75540e3160f ("perf c2c report: Add dimension support")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-c2c.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index 4222ac784fabef6b..b2b07e6a2a717466 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -2155,6 +2155,11 @@ static int c2c_hists__reinit(struct c2c_hists *c2c_hists,
return ret;
}
+static void c2c_hists__exit(struct c2c_hists *c2c_hists)
+{
+ perf_hpp__reset_output_field(&c2c_hists->list);
+}
+
#define DISPLAY_LINE_LIMIT 0.001
static u8 filter_display(u32 val, u32 sum)
@@ -2577,6 +2582,8 @@ static void print_pareto(FILE *out, struct perf_env *env)
c2c_he = container_of(he, struct c2c_hist_entry, he);
print_cacheline(c2c_he->hists, he, &hpp_list, out);
}
+
+ perf_hpp__reset_output_field(&hpp_list);
}
static void print_c2c_info(FILE *out, struct perf_session *session)
@@ -3378,12 +3385,12 @@ static int perf_c2c__report(int argc, const char **argv)
err = setup_nodes(session);
if (err) {
pr_err("Failed setup nodes\n");
- goto out_session;
+ goto out_hists;
}
err = mem2node__init(&c2c.mem2node, env);
if (err)
- goto out_session;
+ goto out_hists;
err = setup_callchain(session->evlist);
if (err)
@@ -3525,6 +3532,8 @@ static int perf_c2c__report(int argc, const char **argv)
free(output_str);
out_mem2node:
mem2node__exit(&c2c.mem2node);
+out_hists:
+ c2c_hists__exit(&c2c.hists);
out_session:
perf_session__delete(session);
out:
--
2.56.0
next reply other threads:[~2026-10-15 6:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-15 6:48 Namhyung Kim [this message]
2026-10-15 7:02 ` [PATCH] perf c2c: Fix memory leaks on output fields sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261015064850.43366-1-namhyung@kernel.org \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.