| From e5705303dd59fa99aae6351a0cbf5ed1261db681 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 15 Jul 2021 18:07:11 +0200 |
| Subject: perf dso: Fix memory leak in dso__new_map() |
| |
| From: Riccardo Mancini <rickyman7@gmail.com> |
| |
| [ Upstream commit 581e295a0f6b5c2931d280259fbbfff56959faa9 ] |
| |
| ASan reports a memory leak when running: |
| |
| # perf test "65: maps__merge_in". |
| |
| The causes of the leaks are two, this patch addresses only the first |
| one, which is related to dso__new_map(). |
| |
| The bug is that dso__new_map() creates a new dso but never decreases the |
| refcount it gets from creating it. |
| |
| This patch adds the missing dso__put(). |
| |
| Signed-off-by: Riccardo Mancini <rickyman7@gmail.com> |
| Fixes: d3a7c489c7fd2463 ("perf tools: Reference count struct dso") |
| Cc: Ian Rogers <irogers@google.com> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Link: http://lore.kernel.org/lkml/60bfe0cd06e89e2ca33646eb8468d7f5de2ee597.1626343282.git.rickyman7@gmail.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/util/dso.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c |
| index d786cf6b0cfa..ee15db2be2f4 100644 |
| --- a/tools/perf/util/dso.c |
| +++ b/tools/perf/util/dso.c |
| @@ -1154,8 +1154,10 @@ struct map *dso__new_map(const char *name) |
| struct map *map = NULL; |
| struct dso *dso = dso__new(name); |
| |
| - if (dso) |
| + if (dso) { |
| map = map__new2(0, dso); |
| + dso__put(dso); |
| + } |
| |
| return map; |
| } |
| -- |
| 2.30.2 |
| |