From: Ian Rogers <irogers@google.com> To: Andi Kleen <ak@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, John Garry <john.garry@huawei.com>, Kajol Jain <kjain@linux.ibm.com>, "Paul A . Clarke" <pc@us.ibm.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, Riccardo Mancini <rickyman7@gmail.com>, Kan Liang <kan.liang@linux.intel.com>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Vineet Singh <vineet.singh@intel.com>, James Clark <james.clark@arm.com>, Mathieu Poirier <mathieu.poirier@linaro.org>, Suzuki K Poulose <suzuki.poulose@arm.com>, Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org Cc: eranian@google.com, Ian Rogers <irogers@google.com> Subject: [PATCH 22/22] perf stat: Fix memory leak in check_per_pkg Date: Tue, 7 Dec 2021 18:46:07 -0800 [thread overview] Message-ID: <20211208024607.1784932-23-irogers@google.com> (raw) In-Reply-To: <20211208024607.1784932-1-irogers@google.com> If the key is already present then free the key used for lookup. Found with: $ perf stat -M IO_Read_BW /bin/true ==1749112==ERROR: LeakSanitizer: detected memory leaks Direct leak of 32 byte(s) in 4 object(s) allocated from: #0 0x7f6f6fa7d7cf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145 #1 0x55acecd9d7a6 in check_per_pkg util/stat.c:343 #2 0x55acecd9d9c5 in process_counter_values util/stat.c:365 #3 0x55acecd9e0ab in process_counter_maps util/stat.c:421 #4 0x55acecd9e292 in perf_stat_process_counter util/stat.c:443 #5 0x55aceca8553e in read_counters ./tools/perf/builtin-stat.c:470 #6 0x55aceca88fe3 in __run_perf_stat ./tools/perf/builtin-stat.c:1023 #7 0x55aceca89146 in run_perf_stat ./tools/perf/builtin-stat.c:1048 #8 0x55aceca90858 in cmd_stat ./tools/perf/builtin-stat.c:2555 #9 0x55acecc05fa5 in run_builtin ./tools/perf/perf.c:313 #10 0x55acecc064fe in handle_internal_command ./tools/perf/perf.c:365 #11 0x55acecc068bb in run_argv ./tools/perf/perf.c:409 #12 0x55acecc070aa in main ./tools/perf/perf.c:539 Signed-off-by: Ian Rogers <irogers@google.com> --- tools/perf/util/stat.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index 5c24aca0968c..c69b221f5e3e 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c @@ -345,9 +345,10 @@ static int check_per_pkg(struct evsel *counter, return -ENOMEM; *key = (uint64_t)d << 32 | s; - if (hashmap__find(mask, (void *)key, NULL)) + if (hashmap__find(mask, (void *)key, NULL)) { *skip = true; - else + free(key); + } else ret = hashmap__add(mask, (void *)key, (void *)1); return ret; -- 2.34.1.400.ga245620fadb-goog
WARNING: multiple messages have this Message-ID (diff)
From: Ian Rogers <irogers@google.com> To: Andi Kleen <ak@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, John Garry <john.garry@huawei.com>, Kajol Jain <kjain@linux.ibm.com>, "Paul A . Clarke" <pc@us.ibm.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, Riccardo Mancini <rickyman7@gmail.com>, Kan Liang <kan.liang@linux.intel.com>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Vineet Singh <vineet.singh@intel.com>, James Clark <james.clark@arm.com>, Mathieu Poirier <mathieu.poirier@linaro.org>, Suzuki K Poulose <suzuki.poulose@arm.com>, Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linaro.org>, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org Cc: eranian@google.com, Ian Rogers <irogers@google.com> Subject: [PATCH 22/22] perf stat: Fix memory leak in check_per_pkg Date: Tue, 7 Dec 2021 18:46:07 -0800 [thread overview] Message-ID: <20211208024607.1784932-23-irogers@google.com> (raw) In-Reply-To: <20211208024607.1784932-1-irogers@google.com> If the key is already present then free the key used for lookup. Found with: $ perf stat -M IO_Read_BW /bin/true ==1749112==ERROR: LeakSanitizer: detected memory leaks Direct leak of 32 byte(s) in 4 object(s) allocated from: #0 0x7f6f6fa7d7cf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145 #1 0x55acecd9d7a6 in check_per_pkg util/stat.c:343 #2 0x55acecd9d9c5 in process_counter_values util/stat.c:365 #3 0x55acecd9e0ab in process_counter_maps util/stat.c:421 #4 0x55acecd9e292 in perf_stat_process_counter util/stat.c:443 #5 0x55aceca8553e in read_counters ./tools/perf/builtin-stat.c:470 #6 0x55aceca88fe3 in __run_perf_stat ./tools/perf/builtin-stat.c:1023 #7 0x55aceca89146 in run_perf_stat ./tools/perf/builtin-stat.c:1048 #8 0x55aceca90858 in cmd_stat ./tools/perf/builtin-stat.c:2555 #9 0x55acecc05fa5 in run_builtin ./tools/perf/perf.c:313 #10 0x55acecc064fe in handle_internal_command ./tools/perf/perf.c:365 #11 0x55acecc068bb in run_argv ./tools/perf/perf.c:409 #12 0x55acecc070aa in main ./tools/perf/perf.c:539 Signed-off-by: Ian Rogers <irogers@google.com> --- tools/perf/util/stat.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index 5c24aca0968c..c69b221f5e3e 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c @@ -345,9 +345,10 @@ static int check_per_pkg(struct evsel *counter, return -ENOMEM; *key = (uint64_t)d << 32 | s; - if (hashmap__find(mask, (void *)key, NULL)) + if (hashmap__find(mask, (void *)key, NULL)) { *skip = true; - else + free(key); + } else ret = hashmap__add(mask, (void *)key, (void *)1); return ret; -- 2.34.1.400.ga245620fadb-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-12-08 2:47 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-08 2:45 [PATCH 00/22] Refactor perf cpumap Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 01/22] libperf: Add comments to perf_cpu_map Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 12:05 ` John Garry 2021-12-08 12:05 ` John Garry 2021-12-08 14:34 ` Ian Rogers 2021-12-08 14:34 ` Ian Rogers 2021-12-08 15:09 ` Ian Rogers 2021-12-08 15:09 ` Ian Rogers 2021-12-10 19:08 ` Arnaldo Carvalho de Melo 2021-12-10 19:08 ` Arnaldo Carvalho de Melo 2021-12-13 8:56 ` John Garry 2021-12-13 8:56 ` John Garry 2021-12-08 2:45 ` [PATCH 02/22] perf stat: Add aggr creators that are passed a cpu Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 12:50 ` John Garry 2021-12-08 12:50 ` John Garry 2021-12-10 19:10 ` Arnaldo Carvalho de Melo 2021-12-10 19:10 ` Arnaldo Carvalho de Melo 2021-12-08 2:45 ` [PATCH 03/22] perf stat: Switch aggregation to use for_each loop Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-11 19:24 ` Jiri Olsa 2021-12-11 19:24 ` Jiri Olsa 2021-12-13 16:17 ` Ian Rogers 2021-12-13 16:17 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 04/22] perf stat: Switch to cpu version of cpu_map__get Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 05/22] perf cpumap: Switch cpu_map__build_map to cpu function Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 06/22] perf cpumap: Remove map+index get_socket Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-11 19:25 ` Jiri Olsa 2021-12-11 19:25 ` Jiri Olsa 2021-12-08 2:45 ` [PATCH 07/22] perf cpumap: Remove map+index get_die Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 08/22] perf cpumap: Remove map+index get_core Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 09/22] perf cpumap: Remove map+index get_node Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 10/22] perf cpumap: Add comments to aggr_cpu_id Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 11/22] perf cpumap: Remove unused cpu_map__socket Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 12/22] perf cpumap: Simplify equal function name Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 13/22] perf cpumap: Rename empty functions Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:45 ` [PATCH 14/22] perf cpumap: Document cpu__get_node and remove redundant function Ian Rogers 2021-12-08 2:45 ` Ian Rogers 2021-12-08 2:46 ` [PATCH 15/22] perf cpumap: Remove map from function names that don't use a map Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-08 2:46 ` [PATCH 16/22] perf cpumap: Remove cpu_map__cpu, use libperf function Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-08 2:46 ` [PATCH 17/22] perf cpumap: Refactor cpu_map__build_map Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-11 19:25 ` Jiri Olsa 2021-12-11 19:25 ` Jiri Olsa 2021-12-08 2:46 ` [PATCH 18/22] perf cpumap: Rename cpu_map__get_X_aggr_by_cpu functions Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-08 2:46 ` [PATCH 19/22] perf cpumap: Move 'has' function to libperf Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-08 17:59 ` Mathieu Poirier 2021-12-08 17:59 ` Mathieu Poirier 2021-12-08 2:46 ` [PATCH 20/22] perf cpumap: Add some comments to cpu_aggr_map Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-08 2:46 ` [PATCH 21/22] perf cpumap: Trim the cpu_aggr_map Ian Rogers 2021-12-08 2:46 ` Ian Rogers 2021-12-11 19:24 ` Jiri Olsa 2021-12-11 19:24 ` Jiri Olsa 2021-12-13 16:11 ` Ian Rogers 2021-12-13 16:11 ` Ian Rogers 2021-12-08 2:46 ` Ian Rogers [this message] 2021-12-08 2:46 ` [PATCH 22/22] perf stat: Fix memory leak in check_per_pkg Ian Rogers 2021-12-13 11:39 ` [PATCH 00/22] Refactor perf cpumap James Clark 2021-12-13 11:39 ` James Clark 2021-12-13 16:10 ` Ian Rogers 2021-12-13 16:10 ` Ian Rogers 2021-12-13 22:06 ` Ian Rogers 2021-12-13 22:06 ` Ian Rogers
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=20211208024607.1784932-23-irogers@google.com \ --to=irogers@google.com \ --cc=acme@kernel.org \ --cc=ak@linux.intel.com \ --cc=alexander.shishkin@linux.intel.com \ --cc=coresight@lists.linaro.org \ --cc=eranian@google.com \ --cc=james.clark@arm.com \ --cc=john.garry@huawei.com \ --cc=jolsa@redhat.com \ --cc=kan.liang@linux.intel.com \ --cc=kjain@linux.ibm.com \ --cc=leo.yan@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mathieu.poirier@linaro.org \ --cc=mike.leach@linaro.org \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=pc@us.ibm.com \ --cc=peterz@infradead.org \ --cc=rickyman7@gmail.com \ --cc=suzuki.poulose@arm.com \ --cc=vineet.singh@intel.com \ /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: linkBe 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.