perf metrics: Fix segv for metrics with no events
authorIan Rogers <irogers@google.com>
Sat, 24 Feb 2024 01:14:20 +0000 (17:14 -0800)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 29 Feb 2024 21:40:13 +0000 (13:40 -0800)
A metric may have no events, for example, the transaction metrics on
x86 are dependent on there being TSX events. Fix a segv where an evsel
of NULL is dereferenced for a metric leader value.

Fixes: a59fb796a36b ("perf metrics: Compute unmerged uncore metrics individually")
Signed-off-by: Ian Rogers <irogers@google.com>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240224011420.3066322-2-irogers@google.com
tools/perf/util/metricgroup.c

index 2d6865c392ef46e99a5b4695e94dafd95a862529..79ef6095ab28919c564e0d6000a4f503129e8305 100644 (file)
@@ -44,7 +44,7 @@ struct metric_event *metricgroup__lookup(struct rblist *metric_events,
        if (!metric_events)
                return NULL;
 
-       if (evsel->metric_leader)
+       if (evsel && evsel->metric_leader)
                me.evsel = evsel->metric_leader;
        nd = rblist__find(metric_events, &me);
        if (nd)