101 lines
3.8 KiB
Diff
101 lines
3.8 KiB
Diff
From 44233997362ff5cabc1fe802df0b37098cd58154 Mon Sep 17 00:00:00 2001
|
|
From: Namhyung Kim <namhyung@kernel.org>
|
|
Date: Tue, 15 Sep 2020 12:18:19 +0900
|
|
Subject: [PATCH 143/201] perf test: Free formats for perf pmu parse test
|
|
|
|
mainline inclusion
|
|
from mainline-v5.9-rc6
|
|
commit d26383dcb2b4b8629fde05270b4e3633be9e3d4b
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/openeuler/kernel/issues/I8C0CX
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d26383dcb2b4b8629fde05270b4e3633be9e3d4b
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
The following leaks were detected by ASAN:
|
|
|
|
Indirect leak of 360 byte(s) in 9 object(s) allocated from:
|
|
#0 0x7fecc305180e in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10780e)
|
|
#1 0x560578f6dce5 in perf_pmu__new_format util/pmu.c:1333
|
|
#2 0x560578f752fc in perf_pmu_parse util/pmu.y:59
|
|
#3 0x560578f6a8b7 in perf_pmu__format_parse util/pmu.c:73
|
|
#4 0x560578e07045 in test__pmu tests/pmu.c:155
|
|
#5 0x560578de109b in run_test tests/builtin-test.c:410
|
|
#6 0x560578de109b in test_and_print tests/builtin-test.c:440
|
|
#7 0x560578de401a in __cmd_test tests/builtin-test.c:661
|
|
#8 0x560578de401a in cmd_test tests/builtin-test.c:807
|
|
#9 0x560578e49354 in run_builtin /home/namhyung/project/linux/tools/perf/perf.c:312
|
|
#10 0x560578ce71a8 in handle_internal_command /home/namhyung/project/linux/tools/perf/perf.c:364
|
|
#11 0x560578ce71a8 in run_argv /home/namhyung/project/linux/tools/perf/perf.c:408
|
|
#12 0x560578ce71a8 in main /home/namhyung/project/linux/tools/perf/perf.c:538
|
|
#13 0x7fecc2b7acc9 in __libc_start_main ../csu/libc-start.c:308
|
|
|
|
Fixes: cff7f956ec4a1 ("perf tests: Move pmu tests into separate object")
|
|
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
|
|
Acked-by: Jiri Olsa <jolsa@redhat.com>
|
|
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
|
Cc: Andi Kleen <ak@linux.intel.com>
|
|
Cc: Ian Rogers <irogers@google.com>
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Stephane Eranian <eranian@google.com>
|
|
Link: http://lore.kernel.org/lkml/20200915031819.386559-12-namhyung@kernel.org
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
|
|
---
|
|
tools/perf/tests/pmu.c | 1 +
|
|
tools/perf/util/pmu.c | 11 +++++++++++
|
|
tools/perf/util/pmu.h | 1 +
|
|
3 files changed, 13 insertions(+)
|
|
|
|
diff --git a/tools/perf/tests/pmu.c b/tools/perf/tests/pmu.c
|
|
index 7bedf8608fdd..3e183eef6f85 100644
|
|
--- a/tools/perf/tests/pmu.c
|
|
+++ b/tools/perf/tests/pmu.c
|
|
@@ -172,6 +172,7 @@ int test__pmu(struct test *test __maybe_unused, int subtest __maybe_unused)
|
|
ret = 0;
|
|
} while (0);
|
|
|
|
+ perf_pmu__del_formats(&formats);
|
|
test_format_dir_put(format);
|
|
return ret;
|
|
}
|
|
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
|
|
index cce165d80146..6f646252a18b 100644
|
|
--- a/tools/perf/util/pmu.c
|
|
+++ b/tools/perf/util/pmu.c
|
|
@@ -1331,6 +1331,17 @@ void perf_pmu__set_format(unsigned long *bits, long from, long to)
|
|
set_bit(b, bits);
|
|
}
|
|
|
|
+void perf_pmu__del_formats(struct list_head *formats)
|
|
+{
|
|
+ struct perf_pmu_format *fmt, *tmp;
|
|
+
|
|
+ list_for_each_entry_safe(fmt, tmp, formats, list) {
|
|
+ list_del(&fmt->list);
|
|
+ free(fmt->name);
|
|
+ free(fmt);
|
|
+ }
|
|
+}
|
|
+
|
|
static int sub_non_neg(int a, int b)
|
|
{
|
|
if (b > a)
|
|
diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
|
|
index 555a917406e6..aeb7bce2ab87 100644
|
|
--- a/tools/perf/util/pmu.h
|
|
+++ b/tools/perf/util/pmu.h
|
|
@@ -83,6 +83,7 @@ int perf_pmu__new_format(struct list_head *list, char *name,
|
|
int config, unsigned long *bits);
|
|
void perf_pmu__set_format(unsigned long *bits, long from, long to);
|
|
int perf_pmu__format_parse(char *dir, struct list_head *head);
|
|
+void perf_pmu__del_formats(struct list_head *formats);
|
|
|
|
struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu);
|
|
|
|
--
|
|
2.27.0
|
|
|