diff options
Diffstat (limited to 'tools/perf/builtin-diff.c')
| -rw-r--r-- | tools/perf/builtin-diff.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index df6307b4050a..daaa7dca9c3b 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -328,6 +328,7 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,  {  	struct addr_location al;  	struct hists *hists = evsel__hists(evsel); +	int ret = -1;  	if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {  		pr_warning("problem processing %d event, skipping it.\n", @@ -338,7 +339,7 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,  	if (hists__add_entry(hists, &al, sample->period,  			     sample->weight, sample->transaction)) {  		pr_warning("problem incrementing symbol period, skipping event\n"); -		return -1; +		goto out_put;  	}  	/* @@ -350,8 +351,10 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,  	hists->stats.total_period += sample->period;  	if (!al.filtered)  		hists->stats.total_non_filtered_period += sample->period; - -	return 0; +	ret = 0; +out_put: +	addr_location__put(&al); +	return ret;  }  static struct perf_tool tool = {  |