Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> --- kernel/events/core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -3172,7 +3172,7 @@ static int perf_event_modify_attr(struct WARN_ON_ONCE(event->ctx->parent_ctx); - mutex_lock(&event->child_mutex); + guard(mutex)(&event->child_mutex); /* * Event-type-independent attributes must be copied before event-type * modification, which will validate that final attributes match the @@ -3181,16 +3181,16 @@ static int perf_event_modify_attr(struct perf_event_modify_copy_attr(&event->attr, attr); err = func(event, attr); if (err) - goto out; + return err; + list_for_each_entry(child, &event->child_list, child_list) { perf_event_modify_copy_attr(&child->attr, attr); err = func(child, attr); if (err) - goto out; + return err; } -out: - mutex_unlock(&event->child_mutex); - return err; + + return 0; } static void __pmu_ctx_sched_out(struct perf_event_pmu_context *pmu_ctx,