2023-04-03 12:01:28

by Robin Murphy

[permalink] [raw]
Subject: [PATCH] perf/arm-cmn: Validate cycles events fully

DTC cycle count events don't have anything to validate or initialise in
themselves, but we should not forget to still validate their whole group
context. Otherwise, we may fail to correctly reject a contrived group
containing an impossible number of cycles events.

Signed-off-by: Robin Murphy <[email protected]>
---
drivers/perf/arm-cmn.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c
index 367d41c5d983..45819528facb 100644
--- a/drivers/perf/arm-cmn.c
+++ b/drivers/perf/arm-cmn.c
@@ -1558,7 +1558,7 @@ static int arm_cmn_event_init(struct perf_event *event)
type = CMN_EVENT_TYPE(event);
/* DTC events (i.e. cycles) already have everything they need */
if (type == CMN_TYPE_DTC)
- return 0;
+ return arm_cmn_validate_group(cmn, event);

eventid = CMN_EVENT_EVENTID(event);
/* For watchpoints we need the actual XP node here */
--
2.39.2.101.g768bb238c484.dirty


2023-04-04 06:14:47

by Ilkka Koskinen

[permalink] [raw]
Subject: Re: [PATCH] perf/arm-cmn: Validate cycles events fully


On Mon, 3 Apr 2023, Robin Murphy wrote:
> DTC cycle count events don't have anything to validate or initialise in
> themselves, but we should not forget to still validate their whole group
> context. Otherwise, we may fail to correctly reject a contrived group
> containing an impossible number of cycles events.
>
> Signed-off-by: Robin Murphy <[email protected]>

Looks good to me and works as expected.

Cheers, Ilkka

> ---
> drivers/perf/arm-cmn.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c
> index 367d41c5d983..45819528facb 100644
> --- a/drivers/perf/arm-cmn.c
> +++ b/drivers/perf/arm-cmn.c
> @@ -1558,7 +1558,7 @@ static int arm_cmn_event_init(struct perf_event *event)
> type = CMN_EVENT_TYPE(event);
> /* DTC events (i.e. cycles) already have everything they need */
> if (type == CMN_TYPE_DTC)
> - return 0;
> + return arm_cmn_validate_group(cmn, event);
>
> eventid = CMN_EVENT_EVENTID(event);
> /* For watchpoints we need the actual XP node here */
> --
> 2.39.2.101.g768bb238c484.dirty
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

2023-04-06 15:53:27

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH] perf/arm-cmn: Validate cycles events fully

On Mon, 3 Apr 2023 12:49:05 +0100, Robin Murphy wrote:
> DTC cycle count events don't have anything to validate or initialise in
> themselves, but we should not forget to still validate their whole group
> context. Otherwise, we may fail to correctly reject a contrived group
> containing an impossible number of cycles events.
>
>

Applied to will (for-next/perf), thanks!

[1/1] perf/arm-cmn: Validate cycles events fully
https://git.kernel.org/will/c/23b2fd839489

Cheers,
--
Will

https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev