Linux Perf Users
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Arnaldo Carvalho de Melo" <acme@kernel.org>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v3 10/19] perf test attr: Accept either sample id bit perf asks for
Date: Fri, 16 Oct 2026 00:28:17 +0000	[thread overview]
Message-ID: <sashiko-outbox-173528@kernel.org> (raw)
In-Reply-To: <20261016001843.71978-11-acme@kernel.org>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] perf test: Event.equal() compares event against itself for unrecorded events
- [Medium] perf: false attr test failures from asymmetric config masking
--

commit 26200ca4070ba6631a880adb369c9b57d611baf6
Author: Arnaldo Carvalho de Melo <acme@redhat.com>

perf test attr: Accept either sample id bit perf asks for

evlist__config() asks for a way to tell the samples apart,
PERF_SAMPLE_IDENTIFIER where available, PERF_SAMPLE_ID otherwise. This patch
updates perf test attr to accept either sample id bit when comparing expected
and recorded events by tracking which side is the recorded event.

> diff --git a/tools/perf/tests/shell/lib/attr.py b/tools/perf/tests/shell/lib/attr.py
> index ee55fbe6f07bd..da4614068772e 100644
> --- a/tools/perf/tests/shell/lib/attr.py
> +++ b/tools/perf/tests/shell/lib/attr.py
[ ... ]
> @@ -198,13 +243,33 @@ class Event(dict):
[ ... ]
>      def equal(self, other):
>          for t in Event.terms:
>              log.debug("      [%s] %s %s", t, self[t], other[t])
>              if t not in self or t not in other:
>                  return False
> -            exp = self.hide_core_pmu_type(t, self[t], other)
> -            got = self.hide_core_pmu_type(t, other[t], other)
> +            recorded = self.recorded_side(other)
> +            expected = other if recorded is self else self
> +            exp = self.hide_core_pmu_type(t, expected[t], recorded or expected)
> +            got = self.hide_core_pmu_type(t, (recorded or self)[t], expected)

[Severity: Medium]
When neither self nor other has the recorded attribute set,
recorded_side(other) will return None. In this case, expected evaluates
to self and got extracts its term from (recorded or self)[t], which is
also self[t].

Does this cause both exp and got to extract from self, ignoring other
entirely and causing the equality check to falsely succeed when comparing two
distinct unrecorded events?

[Severity: Medium]
For got, the third argument passed to hide_core_pmu_type() is hardcoded to
expected.

When self is an expected wildcard event and other is a recorded legacy
PMU event, does this pass (expected, expected) to the masking logic? If so,
could this completely ignore the recorded event's type, resulting in asymmetric
masking of the config field and false test failures?

> +            if recorded is not None:
> +                exp, got = self.hide_event_count_dependent_terms(t, exp, got)
>              if not data_equal(exp, got):
>                  return False
>          return True
> @@ -218,10 +283,15 @@ class Event(dict):
>          for t in Event.terms:
>              if t not in self or t not in other:
>                  continue
> -            exp = self.hide_core_pmu_type(t, self[t], other)
> -            got = self.hide_core_pmu_type(t, other[t], other)
> +            recorded = self.recorded_side(other)
> +            expected = other if recorded is self else self
> +            exp = self.hide_core_pmu_type(t, expected[t], recorded or expected)
> +            got = self.hide_core_pmu_type(t, (recorded or self)[t], expected)

[Severity: Medium]
The same fallback logic appears to be present in Event.diff() as well. Does
passing None for recorded here break the diff logic for unrecorded events by
causing it to diff self against self?

[Severity: Medium]
The third argument for got is again hardcoded to expected instead of
checking the recorded event. Could this asymmetric masking lead to misleading
error logs that report false mismatches for valid legacy PMU configurations?

> +            if recorded is not None:
> +                exp, got = self.hide_event_count_dependent_terms(t, exp, got)
>              if not data_equal(exp, got):
> -                log.warning("expected %s=%s, got %s", t, self[t], other[t])
> +                log.warning("expected %s=%s, got %s", t, expected[t],
> +                            (recorded or self)[t])

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261016001843.71978-1-acme@kernel.org?part=10

  reply	other threads:[~2026-10-16  0:28 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16  0:18 [PATCH v3 0/19] perf test attr: Report the failures again and cope with more than one core PMU Arnaldo Carvalho de Melo
2026-10-16  0:18 ` [PATCH v3 01/19] perf test attr: Fix record dwarf sample_type expectation Arnaldo Carvalho de Melo
2026-10-16  0:22   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 02/19] perf test attr: Allow tests to require a core PMU Arnaldo Carvalho de Melo
2026-10-16  0:26   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 03/19] perf test attr: Fix legacy event encodings in group tests Arnaldo Carvalho de Melo
2026-10-16  0:32   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 04/19] perf test attr: Fix default stat metrics expectations Arnaldo Carvalho de Melo
2026-10-16  0:21   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 05/19] perf test attr: Relax group checking for ungrouped expectations Arnaldo Carvalho de Melo
2026-10-16  0:23   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 06/19] perf evsel: Mark the event as supported when retrying an open Arnaldo Carvalho de Melo
2026-10-16  0:25   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 07/19] perf test attr: Ignore the core PMU type perf puts in 'config' Arnaldo Carvalho de Melo
2026-10-16  0:24   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 08/19] perf evsel: Don't dump probe events to PERF_TEST_ATTR Arnaldo Carvalho de Melo
2026-10-16  0:31   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 09/19] perf test attr: Introduce mask_bits(), generalizing hide_core_pmu_type() Arnaldo Carvalho de Melo
2026-10-16  0:23   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 10/19] perf test attr: Accept either sample id bit perf asks for Arnaldo Carvalho de Melo
2026-10-16  0:28   ` sashiko-bot [this message]
2026-10-16  0:18 ` [PATCH v3 11/19] perf test attr: Ignore the dummy tracking event and the terms it carries Arnaldo Carvalho de Melo
2026-10-16  0:25   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 12/19] perf test attr: Leave out the events of the other core PMUs Arnaldo Carvalho de Melo
2026-10-16  0:24   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 13/19] perf test attr: Ignore the group read_format bit the PMU count can remove Arnaldo Carvalho de Melo
2026-10-16  0:24   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 14/19] perf test attr: State, spelled out in a line, why a test is skipped Arnaldo Carvalho de Melo
2026-10-16  0:24   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 15/19] perf tests: Introduce a 'needs_mlock' suite flag Arnaldo Carvalho de Melo
2026-10-16  0:27   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 16/19] perf tests: Mark the C tests mapping perf ring buffers Arnaldo Carvalho de Melo
2026-10-16  0:24   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 17/19] perf tests: Mark the shell tests not " Arnaldo Carvalho de Melo
2026-10-16  0:26   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 18/19] perf mutex: Add a robust, process-shared mutex initializer Arnaldo Carvalho de Melo
2026-10-16  0:28   ` sashiko-bot
2026-10-16  0:18 ` [PATCH v3 19/19] perf test: Take turns using the perf mlock budget in the mmaping tests Arnaldo Carvalho de Melo
2026-10-16  0:28   ` sashiko-bot

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=sashiko-outbox-173528@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=acme@kernel.org \
    --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