perf/cgroup: Correct indirection in perf_less_group_idx()
authorIan Rogers <irogers@google.com>
Sat, 21 Mar 2020 16:43:31 +0000 (09:43 -0700)
committerIngo Molnar <mingo@kernel.org>
Wed, 8 Apr 2020 09:33:45 +0000 (11:33 +0200)
The void* in perf_less_group_idx() is to a member in the array which points
at a perf_event*, as such it is a perf_event**.

Reported-By: John Sperbeck <jsperbeck@google.com>
Fixes: 6eef8a7116de ("perf/core: Use min_heap in visit_groups_merge()")
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20200321164331.107337-1-irogers@google.com
kernel/events/core.c

index 7afd0b5..26de0a5 100644 (file)
@@ -3522,7 +3522,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;
 
        return le->group_index < re->group_index;
 }