Linux Perf Users
 help / color / mirror / Atom feed
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

  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