diff options
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/metricgroup.c | 9 |
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; } |