| From 1dc38f156ad7cbd5c4c2253c7367a5447e2fa75a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 15 Jul 2021 18:07:10 +0200 |
| Subject: perf test event_update: Fix memory leak of unit |
| |
| From: Riccardo Mancini <rickyman7@gmail.com> |
| |
| [ Upstream commit dccfca926c351ba0893af4c8b481477bdb2881a4 ] |
| |
| ASan reports a memory leak while running: |
| |
| # perf test "49: Synthesize attr update" |
| |
| Caused by a string being duplicated but never freed. |
| |
| This patch adds the missing free(). |
| |
| Note that evsel->unit is not deallocated together with evsel since it is |
| supposed to be a constant string. |
| |
| Signed-off-by: Riccardo Mancini <rickyman7@gmail.com> |
| Fixes: a6e5281780d1da65 ("perf tools: Add event_update event unit type") |
| 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/1fbc8158663fb0d4d5392e36bae564f6ad60be3c.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/tests/event_update.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/tools/perf/tests/event_update.c b/tools/perf/tests/event_update.c |
| index 932ab0740d11..44a50527f9d9 100644 |
| --- a/tools/perf/tests/event_update.c |
| +++ b/tools/perf/tests/event_update.c |
| @@ -88,6 +88,7 @@ int test__event_update(struct test *test __maybe_unused, int subtest __maybe_unu |
| struct evsel *evsel; |
| struct event_name tmp; |
| struct evlist *evlist = evlist__new_default(); |
| + char *unit = strdup("KRAVA"); |
| |
| TEST_ASSERT_VAL("failed to get evlist", evlist); |
| |
| @@ -98,7 +99,7 @@ int test__event_update(struct test *test __maybe_unused, int subtest __maybe_unu |
| |
| perf_evlist__id_add(&evlist->core, &evsel->core, 0, 0, 123); |
| |
| - evsel->unit = strdup("KRAVA"); |
| + evsel->unit = unit; |
| |
| TEST_ASSERT_VAL("failed to synthesize attr update unit", |
| !perf_event__synthesize_event_update_unit(NULL, evsel, process_event_unit)); |
| @@ -118,6 +119,7 @@ int test__event_update(struct test *test __maybe_unused, int subtest __maybe_unu |
| TEST_ASSERT_VAL("failed to synthesize attr update cpus", |
| !perf_event__synthesize_event_update_cpus(&tmp.tool, evsel, process_event_cpus)); |
| |
| + free(unit); |
| evlist__delete(evlist); |
| return 0; |
| } |
| -- |
| 2.30.2 |
| |