Skip to content

Commit

Permalink
perf mem: Fill in the missing session freeing after an error occurs
Browse files Browse the repository at this point in the history
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: Taeung Song <treeze.taeung@gmail.com>
Acked-by: Jiri 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: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Taeung Song authored and Arnaldo Carvalho de Melo committed Jul 1, 2015
1 parent 41b9836 commit 1df9fad
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions tools/perf/builtin-mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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)
Expand Down

0 comments on commit 1df9fad

Please sign in to comment.