All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf metricgroup: Fix system PMU metrics
@ 2021-01-19 10:04 John Garry
  2021-01-19 10:56 ` Joakim Zhang
  2021-01-20 21:42 ` Jiri Olsa
  0 siblings, 2 replies; 16+ messages in thread
From: John Garry @ 2021-01-19 10:04 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, irogers, kjain
  Cc: linux-kernel, linuxarm, qiangqing.zhang, John Garry

Joakim reports that getting "perf stat" for multiple system PMU metrics
segfaults:
./perf stat -a -I 1000 -M imx8mm_ddr_write.all,imx8mm_ddr_write.all
Segmentation fault

While the same works without issue for a single metric.

The logic in metricgroup__add_metric_sys_event_iter() is broken, in that
add_metric() @m argument should be NULL for each new metric. Fix by not
passing a holder for that, and rather make local in
metricgroup__add_metric_sys_event_iter().

Fixes: be335ec28efa ("perf metricgroup: Support adding metrics for system PMUs")
Reported-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: John Garry <john.garry@huawei.com>

diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
index ee94d3e8dd65..2e60ee170abc 100644
--- a/tools/perf/util/metricgroup.c
+++ b/tools/perf/util/metricgroup.c
@@ -766,7 +766,6 @@ int __weak arch_get_runtimeparam(struct pmu_event *pe __maybe_unused)
 struct metricgroup_add_iter_data {
 	struct list_head *metric_list;
 	const char *metric;
-	struct metric **m;
 	struct expr_ids *ids;
 	int *ret;
 	bool *has_match;
@@ -1058,12 +1057,13 @@ static int metricgroup__add_metric_sys_event_iter(struct pmu_event *pe,
 						  void *data)
 {
 	struct metricgroup_add_iter_data *d = data;
+	struct metric *m = NULL;
 	int ret;
 
 	if (!match_pe_metric(pe, d->metric))
 		return 0;
 
-	ret = add_metric(d->metric_list, pe, d->metric_no_group, d->m, NULL, d->ids);
+	ret = add_metric(d->metric_list, pe, d->metric_no_group, &m, NULL, d->ids);
 	if (ret)
 		return ret;
 
@@ -1114,7 +1114,6 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
 				.metric_list = &list,
 				.metric = metric,
 				.metric_no_group = metric_no_group,
-				.m = &m,
 				.ids = &ids,
 				.has_match = &has_match,
 				.ret = &ret,
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-02-06  0:56 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-19 10:04 [PATCH] perf metricgroup: Fix system PMU metrics John Garry
2021-01-19 10:56 ` Joakim Zhang
2021-01-19 11:04   ` John Garry
2021-01-19 11:13     ` Joakim Zhang
2021-01-19 12:02   ` John Garry
2021-01-19 15:47   ` John Garry
2021-01-19 17:33     ` John Garry
2021-01-20  5:15       ` Joakim Zhang
2021-01-20  9:15         ` John Garry
2021-01-20 10:19           ` Joakim Zhang
2021-01-21 20:31           ` Arnaldo Carvalho de Melo
2021-01-21 21:40             ` John Garry
2021-01-20 12:56       ` Jiri Olsa
2021-01-20 13:07         ` John Garry
2021-02-05  9:56         ` John Garry
2021-01-20 21:42 ` Jiri Olsa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.