Re: [PATCH] perf/cgroup: correct indirection in perf_less_group_idx

From: Peter Zijlstra
Date: Sat Mar 21 2020 - 09:25:24 EST


On Fri, Mar 20, 2020 at 06:38:39PM -0700, Ian Rogers wrote:
> The void* in perf_less_group_idx is to a cell in the array which points
> at a perf_event*, as such it is a perf_event**.
>
> Fixes: 6eef8a7116de ("perf/core: Use min_heap in visit_groups_merge()")
> Author: John Sperbeck <jsperbeck@xxxxxxxxxx>

That doesn't make sense, did he write the patch? Then there needs to be
a From: him and a SoB: him, If he reported the issue, it should be
Reported-by: him.

> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> ---
> kernel/events/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index d22e4ba59dfa..a758c2311c53 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -3503,7 +3503,8 @@ static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx,
>
> static bool perf_less_group_idx(const void *l, const void *r)
> {
> - const struct perf_event *le = l, *re = r;
> + const struct perf_event *le = *(const struct perf_event **)l;
> + const struct perf_event *re = *(const struct perf_event **)r;

How did this not insta explode?