Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4411398ioa; Wed, 27 Apr 2022 03:19:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyzoBdVIlGBbngSCsOjtET6D7Hd/eW80mgn3qC3D4h9itR1o5OtmdVZF8RM6W98uBR92/da X-Received: by 2002:a05:6a00:2310:b0:4fa:7eb1:e855 with SMTP id h16-20020a056a00231000b004fa7eb1e855mr29486948pfh.14.1651054789936; Wed, 27 Apr 2022 03:19:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651054789; cv=none; d=google.com; s=arc-20160816; b=BRM0hD6yEnSodgbUAA5n7zpm4WkkfrJQ1GNTUf3EkbqRwQpBveMJYqFpNdrvr81Hr0 2vdf+6Rx4ZvxNv6q6WWjni7O2dXAO5jUJTvs8aJlUi8I3L82kkHUEBxjGdSHU5mOMcH6 GStNaLRAB+W3w1pa5Cs8qOD7bpoj5wBc1JidTo7pDr3V9/20sAqmrjYvE5il83n4VNTn 9SfwQMeV46TaUaeVxJNynhewulNxBXlQrKVyt9RoCFfO172yY557fx9jIeudqcBf1j6V Fzl8TiN5HN11j/HLVUHqJL5Pc5AmM4WboCDkBIrDHfeKgxg05urih1fTib3SPCsArrck 5TRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OfJDJ4fTSN0F3Qf+NBAjL62JL7ZKUvFk+lO9b4vkRsE=; b=K3GYeJbubbMK8TXKU0qpCZmCv6n60SC8IL1WQfU3DeqtmDbOMyQyZCqA+EpPjXEcov Ds13fj4lnxPW1L9WSc8abFt+jLmYW2FARwej3AcX+ta6QuDU8pWkTkFqpk8lS8bT4Bo9 Xa7KHvr4FdL8iKMj1X1q235OFOXr4W8s2ou0gljGrP6BLo4RE5IWEfeN58KP31AsRw/m upMOz0xJnlqwlSZ+5QIQ8jfjivNH/ZzvKbyE7Q/qaZ2KiJLc2LC8Zr5iDMXdrX1IoDiE /9nmyA2MGKgI0jTbLe/ZSabqt+zFxIzKSi5gVlNWAwiCUN3cG1u16lLdcASu7UlWBdSR 9uMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZPDlixFU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id p9-20020a170902e74900b001570e00e0cesi1207915plf.536.2022.04.27.03.19.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 03:19:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZPDlixFU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EB3DC35C1F9; Wed, 27 Apr 2022 02:39:27 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231671AbiDZJHw (ORCPT + 99 others); Tue, 26 Apr 2022 05:07:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346402AbiDZIpA (ORCPT ); Tue, 26 Apr 2022 04:45:00 -0400 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5008789329; Tue, 26 Apr 2022 01:34:43 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id E1D21CE1BC3; Tue, 26 Apr 2022 08:34:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3CA1C385A0; Tue, 26 Apr 2022 08:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1650962080; bh=cO5fCD0ZzNkZaR/zh4/84j4XIbL0lFAwsD0hABYmrS8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZPDlixFUwmRQiXC0c/CBzObZEcVbCpMcaR/8xhRm46vk2Sv32xEI1PWFS1l/xFUyS in1F0+HHe1QpPFDVkkv6Ezzo3Nm7fw3yEyr3V72Q+ksRQMQXtqStxi2MceDCQwACQG DNq4XuJ4Mgv2IOo8EdMr+e8+T6lnIctm0E0A36P4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Grant , Will Deacon , Mark Rutland , Rob Herring Subject: [PATCH 5.10 65/86] arm_pmu: Validate single/group leader events Date: Tue, 26 Apr 2022 10:21:33 +0200 Message-Id: <20220426081743.084793776@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220426081741.202366502@linuxfoundation.org> References: <20220426081741.202366502@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rob Herring commit e5c23779f93d45e39a52758ca593bd7e62e9b4be upstream. In the case where there is only a cycle counter available (i.e. PMCR_EL0.N is 0) and an event other than CPU cycles is opened, the open should fail as the event can never possibly be scheduled. However, the event validation when an event is opened is skipped when the group leader is opened. Fix this by always validating the group leader events. Reported-by: Al Grant Cc: Will Deacon Cc: Mark Rutland Signed-off-by: Rob Herring Acked-by: Mark Rutland Link: https://lore.kernel.org/r/20220408203330.4014015-1-robh@kernel.org Cc: Signed-off-by: Will Deacon Signed-off-by: Greg Kroah-Hartman --- drivers/perf/arm_pmu.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) --- a/drivers/perf/arm_pmu.c +++ b/drivers/perf/arm_pmu.c @@ -398,6 +398,9 @@ validate_group(struct perf_event *event) if (!validate_event(event->pmu, &fake_pmu, leader)) return -EINVAL; + if (event == leader) + return 0; + for_each_sibling_event(sibling, leader) { if (!validate_event(event->pmu, &fake_pmu, sibling)) return -EINVAL; @@ -487,12 +490,7 @@ __hw_perf_event_init(struct perf_event * local64_set(&hwc->period_left, hwc->sample_period); } - if (event->group_leader != event) { - if (validate_group(event) != 0) - return -EINVAL; - } - - return 0; + return validate_group(event); } static int armpmu_event_init(struct perf_event *event)