[PATCH 1/2] perf header: Fix one memory leakage in perf_event__fprintf_event_update()

From: Yicong Yang
Date: Thu Dec 07 2023 - 03:21:03 EST


From: Yicong Yang <yangyicong@xxxxxxxxxxxxx>

When dump the raw trace by `perf report -D` ASan reports a memory
leakage in perf_event__fprintf_event_update(). It shows that we
allocated a temporary cpumap for dumping the CPUs but doesn't
release it and it's not used elsewhere. Fix this by free the
cpumap after the dumping.

Fixes: c853f9394b7b ("perf tools: Add perf_event__fprintf_event_update function")
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Signed-off-by: Yicong Yang <yangyicong@xxxxxxxxxxxxx>
---
tools/perf/util/header.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index e86b9439ffee..7190f39ccd13 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -4369,9 +4369,10 @@ size_t perf_event__fprintf_event_update(union perf_event *event, FILE *fp)
ret += fprintf(fp, "... ");

map = cpu_map__new_data(&ev->cpus.cpus);
- if (map)
+ if (map) {
ret += cpu_map__fprintf(map, fp);
- else
+ perf_cpu_map__put(map);
+ } else
ret += fprintf(fp, "failed to get cpus\n");
break;
default:
--
2.24.0