Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2429989pxb; Tue, 23 Feb 2021 06:58:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJxLFmSqBnW74jq60PYzKDjv2Cpq6LzADGnJODpQ0bfvZEWaW4Fl0Y9QsnJxboEHAMnZW08F X-Received: by 2002:aa7:cb8e:: with SMTP id r14mr4421313edt.331.1614092323889; Tue, 23 Feb 2021 06:58:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614092323; cv=none; d=google.com; s=arc-20160816; b=ia3RC9LVsO2AKrkIh2bW86nsv91k2u51MuHVXqmtz8QHu9X2jrxZ2rD6evekAhhLo+ uX1Z3de51AD/mZFaQIhX8nuQMzN5Rr+NUzmxPjMziNmEZfYVDJHja8E2r8cdF0K6MYIg HvJ/z444RJ6spy+TA7F2mHzjG8Qd8Gsc9f8NIqip+AKGBuuJhUd3RqVVhhlDwSWQKEKL ZPyFA2g8iMG61ZE0VvJteYZR4/z6tj9xG4yClTUVSRoniSfLqolKxEUorEd7ggxtwH0E NqIzVSlA8c+8EMmwozZubLJK5PVz7oPeVi8QIoqEge5/lKmxXEPiSwEtCgkjmKiCwZ2g LJ2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=5S1278VXBXOSLVzud0ikIuJDPMbbC2qcHtU1cXjsgPk=; b=Nwp5RNbSQbAXvC/h7FcXfD8BwMl9C+H8raExX8+DF0tSOeaX45/2bFafQn94qbZHBE IjZMG7gqKKopag139ClKAGt2c5ruwL5U5BFwxq38Yt7KuJfP4FEO4Qr6C3SW+hsCaBJD NrjzhWqjPUiGhv/wXdm4evhuqMIjuHw8QPtRFUCC4GRh144FxLcXC3FsmlAi6K1pm+dQ Cim+FQQ9gq+v6XdzXOGMsMyrFbqKZU3b8p1XpqEbfjD2VlMTQ5PUxiNke2J5EfuuouEE 7GuA9ynMucdQxTy9uvN6DrdLm9IO1ot778g06mOfT3dvfdpIvILzomX9+ZPRqxt82Dfx hNGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=NiVKZu5i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d19si13577933edt.189.2021.02.23.06.58.20; Tue, 23 Feb 2021 06:58:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=NiVKZu5i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232931AbhBWOtx (ORCPT + 99 others); Tue, 23 Feb 2021 09:49:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232725AbhBWOts (ORCPT ); Tue, 23 Feb 2021 09:49:48 -0500 Received: from mail-qv1-xf2d.google.com (mail-qv1-xf2d.google.com [IPv6:2607:f8b0:4864:20::f2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 034E2C061574 for ; Tue, 23 Feb 2021 06:49:07 -0800 (PST) Received: by mail-qv1-xf2d.google.com with SMTP id q9so4002756qvo.8 for ; Tue, 23 Feb 2021 06:49:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5S1278VXBXOSLVzud0ikIuJDPMbbC2qcHtU1cXjsgPk=; b=NiVKZu5i8qwDclQxF0dwzHxzXcPvLJbWdBqJ0G5HlyTCGT8dxnmVly+zHKAPdGPFrQ jLdOKWrkacctxFanoSKOGX3fa5L5bCcvzYdI6za53kIxVTLpypD57RLJB3PkyBrTsKkd lKj6wAgVQntdDLIQBxJ8PT4t95heusHlnfeTwdCiuCeqGzrqnyqBeEaDR+9vUSPaYSbq DG/uwnbkangeBPnYXVIcU4DYx5Qyusddt4EZdL8HrGfvG6gGArKhgL8JjHqAqZbyNnSP 9/dOz/8pMQC+MMk4o8QWp5Tuz5WRqftR8WswyTX6bHnKj8/SSyC4Do5EmH6jhxTuAx7C iWwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=5S1278VXBXOSLVzud0ikIuJDPMbbC2qcHtU1cXjsgPk=; b=haM2PC/O1dr3BRCedO6ixQSQQKFKYXDuspblotNmC7Xu01QDtJE+5Sf6G7x7HbTV5V BmhJNa8DDTy4gOi95ny7pHcPWhWBhA0HBR47ltza2AVXPYkfkvHbv8AysWf5f8fibmb4 MJu8zxRj9OczWDOTzps40/CZs0zwJCod4zod+nmBy+ffors+WIlp6N44GOmPHqQZ8WdD NL0e5x1oTuJ/TSkciVuhIuZ44kDYcvRlr4nrRmji7fp8p8gf3Gvo+VS1YGAxy5NwRLrR mv6+e359L6Tf0SC4D/TR7rGzyjwhfBrgA1oMSynGnED912Wd5ZWdR2fiGNBOgOdwv7NQ GWcg== X-Gm-Message-State: AOAM533PKKxqMJxQ0nXgSKboObu/lu31LlD3uBUE6wGK3QHi13VLVpBd 8DPnKNA8eaRtOgAe4yhRe3UCAiC3zz0UuqLSbssC9g== X-Received: by 2002:a0c:e20f:: with SMTP id q15mr22742422qvl.13.1614091745827; Tue, 23 Feb 2021 06:49:05 -0800 (PST) MIME-Version: 1.0 References: <20210223143426.2412737-1-elver@google.com> <20210223143426.2412737-2-elver@google.com> In-Reply-To: <20210223143426.2412737-2-elver@google.com> From: Dmitry Vyukov Date: Tue, 23 Feb 2021 15:48:54 +0100 Message-ID: Subject: Re: [PATCH RFC 1/4] perf/core: Apply PERF_EVENT_IOC_MODIFY_ATTRIBUTES to children To: Marco Elver Cc: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Jiri Olsa , Mark Rutland , Namhyung Kim , Thomas Gleixner , Alexander Potapenko , Al Viro , Arnd Bergmann , Christian Brauner , Jann Horn , Jens Axboe , Matt Morehouse , Peter Collingbourne , Ian Rogers , kasan-dev , linux-arch , linux-fsdevel , LKML , linux-m68k@lists.linux-m68k.org, "the arch/x86 maintainers" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 23, 2021 at 3:34 PM Marco Elver wrote: > > As with other ioctls (such as PERF_EVENT_IOC_{ENABLE,DISABLE}), fix up > handling of PERF_EVENT_IOC_MODIFY_ATTRIBUTES to also apply to children. > > Link: https://lkml.kernel.org/r/YBqVaY8aTMYtoUnX@hirez.programming.kicks-ass.net > Suggested-by: Dmitry Vyukov > Signed-off-by: Marco Elver Reviewed-by: Dmitry Vyukov > --- > kernel/events/core.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 129dee540a8b..37a8297be164 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -3179,16 +3179,36 @@ static int perf_event_modify_breakpoint(struct perf_event *bp, > static int perf_event_modify_attr(struct perf_event *event, > struct perf_event_attr *attr) > { > + int (*func)(struct perf_event *, struct perf_event_attr *); > + struct perf_event *child; > + int err; > + > if (event->attr.type != attr->type) > return -EINVAL; > > switch (event->attr.type) { > case PERF_TYPE_BREAKPOINT: > - return perf_event_modify_breakpoint(event, attr); > + func = perf_event_modify_breakpoint; > + break; > default: > /* Place holder for future additions. */ > return -EOPNOTSUPP; > } > + > + WARN_ON_ONCE(event->ctx->parent_ctx); > + > + mutex_lock(&event->child_mutex); > + err = func(event, attr); > + if (err) > + goto out; > + list_for_each_entry(child, &event->child_list, child_list) { > + err = func(child, attr); > + if (err) > + goto out; > + } > +out: > + mutex_unlock(&event->child_mutex); > + return err; > } > > static void ctx_sched_out(struct perf_event_context *ctx, > -- > 2.30.0.617.g56c4b15f3c-goog >