summaryrefslogtreecommitdiff
path: root/tools/perf
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/util/metricgroup.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c
index f690da21668d..86665c502443 100644
--- a/tools/perf/util/metricgroup.c
+++ b/tools/perf/util/metricgroup.c
@@ -827,6 +827,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
{
struct pmu_event *pe;
struct egroup *eg;
+ LIST_HEAD(list);
int i, ret;
bool has_match = false;
@@ -834,7 +835,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
has_match = true;
eg = NULL;
- ret = add_metric(group_list, pe, metric_no_group, &eg);
+ ret = add_metric(&list, pe, metric_no_group, &eg);
if (ret)
return ret;
@@ -843,7 +844,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
* included in the expression.
*/
ret = resolve_metric(metric_no_group,
- group_list, map);
+ &list, map);
if (ret)
return ret;
}
@@ -852,7 +853,7 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
if (!has_match)
return -EINVAL;
- list_for_each_entry(eg, group_list, nd) {
+ list_for_each_entry(eg, &list, nd) {
if (events->len > 0)
strbuf_addf(events, ",");
@@ -864,6 +865,8 @@ static int metricgroup__add_metric(const char *metric, bool metric_no_group,
&eg->pctx);
}
}
+
+ list_splice(&list, group_list);
return 0;
}