diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index 4222ac784fab..f51fa23f3bf1 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -2155,6 +2155,11 @@ static int c2c_hists__reinit(struct c2c_hists *c2c_hists, return ret; } +static void c2c_hists__exit(struct c2c_hists *c2c_hists) +{ + perf_hpp__reset_output_field(&c2c_hists->list); +} + #define DISPLAY_LINE_LIMIT 0.001 static u8 filter_display(u32 val, u32 sum) @@ -2563,7 +2568,7 @@ static void print_pareto(FILE *out, struct perf_env *env) ret = hpp_list__parse(&hpp_list, cl_output, /*evlist=*/NULL, env); if (WARN_ONCE(ret, "failed to setup sort entries\n")) - return; + goto out; nd = rb_first_cached(&c2c.hists.hists.entries); @@ -2577,6 +2582,9 @@ static void print_pareto(FILE *out, struct perf_env *env) c2c_he = container_of(he, struct c2c_hist_entry, he); print_cacheline(c2c_he->hists, he, &hpp_list, out); } + +out: + perf_hpp__reset_output_field(&hpp_list); } static void print_c2c_info(FILE *out, struct perf_session *session) @@ -3378,12 +3386,12 @@ static int perf_c2c__report(int argc, const char **argv) err = setup_nodes(session); if (err) { pr_err("Failed setup nodes\n"); - goto out_session; + goto out_hists; } err = mem2node__init(&c2c.mem2node, env); if (err) - goto out_session; + goto out_hists; err = setup_callchain(session->evlist); if (err) @@ -3525,6 +3533,8 @@ static int perf_c2c__report(int argc, const char **argv) free(output_str); out_mem2node: mem2node__exit(&c2c.mem2node); +out_hists: + c2c_hists__exit(&c2c.hists); out_session: perf_session__delete(session); out: