From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v6 1/2] perf tests: Add test for uncore event sorting
Date: Mon, 18 May 2026 02:53:07 +0000 [thread overview]
Message-ID: <20260518025307.8A0B8C2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260518023225.2472122-2-irogers@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Double free of `m.event1` when scanning uncore PMUs.
--
commit 5412f65ccaa1b5aa1cce690a35fcf6de242d9132
Author: Ian Rogers <irogers@google.com>
perf tests: Add test for uncore event sorting
This commit adds a test for uncore event sorting that matches multiple PMUs.
It ensures that event groups are correctly resorted when initial parsing
results in mixed PMUs due to common prefixes.
> diff --git a/tools/perf/tests/uncore-event-sorting.c b/tools/perf/tests/uncore-event-sorting.c
> new file mode 100644
> index 0000000000000..88bda7a89a057
> --- /dev/null
> +++ b/tools/perf/tests/uncore-event-sorting.c
[ ... ]
> +static int test__uncore_event_sorting(struct test_suite *test __maybe_unused,
> + int subtest __maybe_unused)
> +{
> + struct evlist *evlist = NULL;
> + struct parse_events_error err;
> + struct evsel *evsel;
> + struct perf_pmu *pmu = NULL;
> + char *pmu_prefix = NULL;
> + struct match_state m = { NULL, NULL };
> + char buf[1024];
> + int ret;
> +
> + parse_events_error__init(&err);
> +
> + while ((pmu = perf_pmus__scan(pmu)) != NULL) {
> + size_t len;
> + struct perf_pmu *sibling;
> +
> + if (pmu->is_core)
> + continue;
> +
> + len = pmu_name_len_no_suffix(pmu->name);
> + if (len == strlen(pmu->name))
> + continue;
> +
> + sibling = pmu;
> + while ((sibling = perf_pmus__scan(sibling)) != NULL) {
> + if (sibling->is_core)
> + continue;
> + if (pmu_name_len_no_suffix(sibling->name) == len &&
> + !strncmp(pmu->name, sibling->name, len))
> + break;
> + }
> +
> + if (!sibling)
> + continue;
> +
> + m.event1 = m.event2 = NULL;
> + perf_pmu__for_each_event(pmu, false, &m, event_cb);
> +
> + if (m.event1 && m.event2) {
> + pmu_prefix = strndup(pmu->name, len);
> + break;
> + }
> + free(m.event1);
> + }
Could this lead to a double free of m.event1?
If perf_pmu__for_each_event() allocates m.event1 but not m.event2, the code
falls through the condition and frees m.event1 without setting it back to NULL.
If the loop subsequently terminates, or if the next iteration triggers an early
continue before m.event1 is reset to NULL, the function will eventually
proceed to the out_err label.
[ ... ]
> +out_err:
> + evlist__delete(evlist);
> + parse_events_error__exit(&err);
> + free(pmu_prefix);
> + free(m.event1);
When it reaches this point, will it call free(m.event1) again on the dangling
pointer?
> + free(m.event2);
> + return ret;
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260518023225.2472122-1-irogers@google.com?part=1
next prev parent reply other threads:[~2026-05-18 2:53 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-25 18:30 [PATCH v1 0/2] perf tests: Add tests for uncore and perf metric event sorting Ian Rogers
2026-03-25 18:30 ` [PATCH v1 1/2] perf tests: Add test for uncore " Ian Rogers
2026-03-27 23:36 ` Chen, Zide
2026-03-31 3:06 ` Namhyung Kim
2026-03-25 18:30 ` [PATCH v1 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-03-30 21:53 ` Chen, Zide
2026-03-31 3:08 ` Namhyung Kim
2026-03-31 16:52 ` [PATCH v2 0/2] perf tests: Add tests for uncore and perf metric " Ian Rogers
2026-03-31 16:52 ` [PATCH v2 1/2] perf tests: Add test for uncore " Ian Rogers
2026-03-31 16:52 ` [PATCH v2 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-03-31 18:54 ` [PATCH v3 0/2] Add tests for uncore and perf metric " Ian Rogers
2026-03-31 18:54 ` [PATCH v3 1/2] perf tests: Add test for uncore " Ian Rogers
2026-04-01 21:48 ` Namhyung Kim
2026-03-31 18:54 ` [PATCH v3 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-04-01 3:33 ` Namhyung Kim
2026-05-17 23:28 ` [PATCH v4 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-17 23:28 ` [PATCH v4 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-17 23:49 ` sashiko-bot
2026-05-17 23:28 ` [PATCH v4 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 0:05 ` sashiko-bot
2026-05-18 0:37 ` [PATCH v5 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 0:37 ` [PATCH v5 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 1:06 ` sashiko-bot
2026-05-18 0:37 ` [PATCH v5 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 1:20 ` sashiko-bot
2026-05-18 2:32 ` [PATCH v6 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 2:32 ` [PATCH v6 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 2:53 ` sashiko-bot [this message]
2026-05-18 2:32 ` [PATCH v6 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 3:08 ` sashiko-bot
2026-05-18 4:31 ` [PATCH v7 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 4:31 ` [PATCH v7 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 4:48 ` sashiko-bot
2026-05-18 4:31 ` [PATCH v7 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-18 6:29 ` [PATCH v8 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-18 6:29 ` [PATCH v8 1/2] perf tests: Add test for uncore event sorting Ian Rogers
2026-05-18 6:29 ` [PATCH v8 2/2] perf arch x86 tests: Add test for topdown " Ian Rogers
2026-05-20 15:31 ` [PATCH v8 0/2] perf tests: Add uncore and x86 topdown event sorting tests Ian Rogers
2026-05-20 20:28 ` Namhyung Kim
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=20260518025307.8A0B8C2BCB0@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=irogers@google.com \
--cc=linux-perf-users@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox