Re: [PATCH v2] perf/core: restore __perf_remove_from_context when DETACH_EXIT not set

From: Yeoreum Yun
Date: Tue Jun 03 2025 - 09:23:29 EST


Hi Peter,

> On Tue, Jun 03, 2025 at 02:50:56PM +0200, Peter Zijlstra wrote:
> > On Tue, Jun 03, 2025 at 06:44:58PM +0800, David Wang wrote:
> >
> >
> > > (As yeoreum.yun@xxxxxxx pointed out, the change in perf_remove_from_context() made
> > > perf_event_set_state() happened before list_del_event(), resulting in perf_cgroup_event_disable()
> > > not called.)
> >
> > Aah, d'0h. Let me see what we should do there.
>
> Does this help? This way event_sched_out() will call
> perf_cgroup_event_disable().
>
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index f34c99f8ce8f..adbb0372825f 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -2494,9 +2494,9 @@ __perf_remove_from_context(struct perf_event *event,
> if (flags & DETACH_REVOKE)
> state = PERF_EVENT_STATE_REVOKED;
> if (flags & DETACH_DEAD) {
> - event->pending_disable = 1;
> state = PERF_EVENT_STATE_DEAD;
> }
> + event->pending_disable = 1;

I think it would break if event->state is "PERF_EVENT_STATE_ERROR".

TBH, there is the patch to solve this problem:
https://lore.kernel.org/all/20250602184049.4010919-1-yeoreum.yun@xxxxxxx/

Does it have a problem?

Thanks.

--
Sincerely,
Yeoreum Yun