All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Garry <john.garry@huawei.com>
To: Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Stephane Eranian <eranian@google.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Andi Kleen <andi@firstfloor.org>, Ian Rogers <irogers@google.com>
Subject: Re: [PATCH 8/9] perf test: Free aliases for PMU event map aliases test
Date: Mon, 7 Sep 2020 11:28:31 +0100	[thread overview]
Message-ID: <78911dd7-8a93-0f1b-7805-1fad87ad6979@huawei.com> (raw)
In-Reply-To: <20200907034502.753230-9-namhyung@kernel.org>

On 07/09/2020 04:45, Namhyung Kim wrote:
> The aliases were never released causing the following leaks:
> 
>    Indirect leak of 1224 byte(s) in 9 object(s) allocated from:
>      #0 0x7feefb830628 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x107628)
>      #1 0x56332c8f1b62 in __perf_pmu__new_alias util/pmu.c:322
>      #2 0x56332c8f401f in pmu_add_cpu_aliases_map util/pmu.c:778
>      #3 0x56332c792ce9 in __test__pmu_event_aliases tests/pmu-events.c:295
>      #4 0x56332c792ce9 in test_aliases tests/pmu-events.c:367
>      #5 0x56332c76a09b in run_test tests/builtin-test.c:410
>      #6 0x56332c76a09b in test_and_print tests/builtin-test.c:440
>      #7 0x56332c76ce69 in __cmd_test tests/builtin-test.c:695
>      #8 0x56332c76ce69 in cmd_test tests/builtin-test.c:807
>      #9 0x56332c7d2214 in run_builtin /home/namhyung/project/linux/tools/perf/perf.c:312
>      #10 0x56332c6701a8 in handle_internal_command /home/namhyung/project/linux/tools/perf/perf.c:364
>      #11 0x56332c6701a8 in run_argv /home/namhyung/project/linux/tools/perf/perf.c:408
>      #12 0x56332c6701a8 in main /home/namhyung/project/linux/tools/perf/perf.c:538
>      #13 0x7feefb359cc9 in __libc_start_main ../csu/libc-start.c:308
> 
> Cc: John Garry <john.garry@huawei.com>
> Fixes: 956a78356c24c ("perf test: Test pmu-events aliases")
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>   tools/perf/tests/pmu-events.c | 5 +++++
>   tools/perf/util/pmu.c         | 2 +-
>   tools/perf/util/pmu.h         | 1 +
>   3 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
> index eb19f9a0bc15..d3517a74d95e 100644
> --- a/tools/perf/tests/pmu-events.c
> +++ b/tools/perf/tests/pmu-events.c
> @@ -274,6 +274,7 @@ static int __test__pmu_event_aliases(char *pmu_name, int *count)
>   	int res = 0;
>   	bool use_uncore_table;
>   	struct pmu_events_map *map = __test_pmu_get_events_map();
> +	struct perf_pmu_alias *a, *tmp;
>   
>   	if (!map)
>   		return -1;
> @@ -347,6 +348,10 @@ static int __test__pmu_event_aliases(char *pmu_name, int *count)
>   			  pmu_name, alias->name);
>   	}
>   
> +	list_for_each_entry_safe(a, tmp, &aliases, list) {
> +		list_del(&a->list);
> +		perf_pmu_free_alias(a);

This looks ok.

I also notice that we have other paths like this, where the allocated 
pmu (and aliases) are not freed for later error paths, it seems:

parse_events_add_pmu() -> perf_pmu_find() -> pmu_lookup() -> 
pmu_add_cpu_aliases().

I had a quick look at the rest of the series, and could not see if we 
fix up any of this.

Cheers,
john

> +	}
>   	free(pmu);
>   	return res;
>   }
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index f1688e1f6ed7..555cb3524c25 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -274,7 +274,7 @@ static void perf_pmu_update_alias(struct perf_pmu_alias *old,
>   }
>   
>   /* Delete an alias entry. */
> -static void perf_pmu_free_alias(struct perf_pmu_alias *newalias)
> +void perf_pmu_free_alias(struct perf_pmu_alias *newalias)
>   {
>   	zfree(&newalias->name);
>   	zfree(&newalias->desc);
> diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
> index 44ccbdbb1c37..b63c4c5e335e 100644
> --- a/tools/perf/util/pmu.h
> +++ b/tools/perf/util/pmu.h
> @@ -113,6 +113,7 @@ void pmu_add_cpu_aliases_map(struct list_head *head, struct perf_pmu *pmu,
>   
>   struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu);
>   bool pmu_uncore_alias_match(const char *pmu_name, const char *name);
> +void perf_pmu_free_alias(struct perf_pmu_alias *alias);
>   
>   int perf_pmu__convert_scale(const char *scale, char **end, double *sval);
>   
> 


  reply	other threads:[~2020-09-07 10:31 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-07  3:44 [PATCHSET 0/9] perf tools: Fix various memory leaks Namhyung Kim
2020-09-07  3:44 ` [PATCH 1/9] perf evlist: Fix cpu/thread map leak Namhyung Kim
2020-09-07 11:29   ` Jiri Olsa
2020-09-07 11:32     ` Jiri Olsa
2020-09-07 13:22       ` Namhyung Kim
2020-09-07  3:44 ` [PATCH 2/9] perf parse-event: Fix cpu map leaks Namhyung Kim
2020-09-07  3:44 ` [PATCH 3/9] perf parse-event: Fix memory leak in evsel->unit Namhyung Kim
2020-09-07  3:44 ` [PATCH 4/9] perf test: Fix memory leaks in parse-metric test Namhyung Kim
2020-09-07  3:44 ` [PATCH 5/9] perf metric: Release expr_parse_ctx after testing Namhyung Kim
2020-09-07  3:44 ` [PATCH 6/9] perf metric: Free metric when it failed to resolve Namhyung Kim
2020-09-07  3:45 ` [PATCH 7/9] perf metric: Do not free metric when " Namhyung Kim
2020-09-07  3:45 ` [PATCH 8/9] perf test: Free aliases for PMU event map aliases test Namhyung Kim
2020-09-07 10:28   ` John Garry [this message]
2020-09-07 13:20     ` Namhyung Kim
2020-09-07 13:47       ` John Garry
2020-09-07  3:45 ` [PATCH 9/9] perf test: Free formats for perf pmu parse test Namhyung Kim
2020-09-07 11:35 ` [PATCHSET 0/9] perf tools: Fix various memory leaks Jiri Olsa

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=78911dd7-8a93-0f1b-7805-1fad87ad6979@huawei.com \
    --to=john.garry@huawei.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    /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: link
Be 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.