From: sashiko-bot@kernel.org
To: "Leo Yan" <leo.yan@arm.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events
Date: Tue, 29 Sep 2026 15:23:22 +0000 [thread overview]
Message-ID: <20260929152322.A6AF61F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260929-perf_core_itrace_start_fix_inherit_event-v2-1-9361a946ed56@arm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] perf/core: data race on attach_state via cross-context RMW
--
commit d3d316cfe645aab199ffb03f9db1a44478297ef1
Author: Leo Yan <leo.yan@arm.com>
Date: Tue Sep 29 15:08:32 2026 +0000
perf/core: Fix ITRACE start suppression for inherited events
This commit modifies perf_event_itrace_started() to apply the
PERF_ATTACH_ITRACE flag to the parent event instead of the child event for
inherited events. This ensures that the setter and checker use the same
event to prevent redundant ITRACE_START records on subsequent schedule-ins.
Closes: https://lore.kernel.org/linux-perf-users/20260901164705.042781F000E9@smtp.kernel.org/
Fixes: 9a6694cfa239 ("perf/x86/intel/pt: Do not force sync packets on every schedule-in")
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 634d2ccbab82d..85d924cce387f 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -10568,6 +10568,9 @@ void perf_event_text_poke(const void *addr, const void *old_bytes,
>
> void perf_event_itrace_started(struct perf_event *event)
> {
> + if (event->parent)
> + event = event->parent;
> +
> WRITE_ONCE(event->attach_state, event->attach_state | PERF_ATTACH_ITRACE);
[Severity: High]
Does this introduce a cross-context read-modify-write data race on the shared
parent event's attach_state?
perf_event_itrace_started() is called from the PMU schedule-in path, holding
only the child's ctx->lock. It performs a lockless, non-atomic update on the
parent's attach_state.
Concurrently, the parent event might be undergoing teardown and modifying the
same attach_state field using non-atomic bitwise clears while holding the
parent's ctx->lock:
kernel/events/core.c:list_del_event() {
...
event->attach_state &= ~PERF_ATTACH_CONTEXT;
...
}
Another concurrent update to the parent's attach_state occurs in
perf_group_detach():
kernel/events/core.c:perf_group_detach() {
...
event->attach_state &= ~PERF_ATTACH_GROUP;
...
}
Because child events remain fully active and are detached only after the parent
is removed from its context, a child event can schedule in and race with the
parent's teardown.
Could this RMW race silently overwrite and resurrect bits that the parent
teardown just cleared?
If PERF_ATTACH_CONTEXT is resurrected, it seems it would bypass the
double-detach protection in list_del_event(), which is legitimately called
twice during exit() and close(). Would this result in integer underflow on
ctx->nr_events and list corruption from double list removals?
> }
>
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260929-perf_core_itrace_start_fix_inherit_event-v2-1-9361a946ed56@arm.com?part=1
next prev parent reply other threads:[~2026-09-29 15:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-29 15:08 [PATCH v2] perf/core: Fix ITRACE start suppression for inherited events Leo Yan
2026-09-29 15:23 ` sashiko-bot [this message]
2026-09-29 15:31 ` James Clark
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=20260929152322.A6AF61F00893@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=leo.yan@arm.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