Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1df9fade authored by Taeung Song's avatar Taeung Song Committed by Arnaldo Carvalho de Melo
Browse files

perf mem: Fill in the missing session freeing after an error occurs



When an error occurs an error value is just returned without freeing the
session. So allocating and freeing session have to be matched as a pair
even if an error occurs.

Signed-off-by: default avatarTaeung Song <treeze.taeung@gmail.com>
Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1435752499-11752-1-git-send-email-treeze.taeung@gmail.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 41b98360
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -124,7 +124,6 @@ static int report_raw_events(struct perf_mem *mem)
		.mode = PERF_DATA_MODE_READ,
		.force = mem->force,
	};
	int err = -EINVAL;
	int ret;
	struct perf_session *session = perf_session__new(&file, false,
							 &mem->tool);
@@ -135,24 +134,21 @@ static int report_raw_events(struct perf_mem *mem)
	if (mem->cpu_list) {
		ret = perf_session__cpu_bitmap(session, mem->cpu_list,
					       mem->cpu_bitmap);
		if (ret)
		if (ret < 0)
			goto out_delete;
	}

	if (symbol__init(&session->header.env) < 0)
		return -1;
	ret = symbol__init(&session->header.env);
	if (ret < 0)
		goto out_delete;

	printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");

	err = perf_session__process_events(session);
	if (err)
		return err;

	return 0;
	ret = perf_session__process_events(session);

out_delete:
	perf_session__delete(session);
	return err;
	return ret;
}

static int report_events(int argc, const char **argv, struct perf_mem *mem)