aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorTaeung Song <treeze.taeung@gmail.com>2015-06-30 11:18:44 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-07-01 16:53:49 -0400
commit41b983609a1618e9fa70023d83232ed959056c8a (patch)
treefed69b601c6887e023e2413836a0161fa83dbf9c /tools
parent07a716fff25b826461baa2a07faa2df8c171f220 (diff)
perf kvm: 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: Taeung Song <treeze.taeung@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1435677525-28055-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/builtin-kvm.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c
index 74878cd75078..fc1cffb1b7a2 100644
--- a/tools/perf/builtin-kvm.c
+++ b/tools/perf/builtin-kvm.c
@@ -1061,8 +1061,10 @@ static int read_events(struct perf_kvm_stat *kvm)
1061 1061
1062 symbol__init(&kvm->session->header.env); 1062 symbol__init(&kvm->session->header.env);
1063 1063
1064 if (!perf_session__has_traces(kvm->session, "kvm record")) 1064 if (!perf_session__has_traces(kvm->session, "kvm record")) {
1065 return -EINVAL; 1065 ret = -EINVAL;
1066 goto out_delete;
1067 }
1066 1068
1067 /* 1069 /*
1068 * Do not use 'isa' recorded in kvm_exit tracepoint since it is not 1070 * Do not use 'isa' recorded in kvm_exit tracepoint since it is not
@@ -1070,9 +1072,13 @@ static int read_events(struct perf_kvm_stat *kvm)
1070 */ 1072 */
1071 ret = cpu_isa_config(kvm); 1073 ret = cpu_isa_config(kvm);
1072 if (ret < 0) 1074 if (ret < 0)
1073 return ret; 1075 goto out_delete;
1074 1076
1075 return perf_session__process_events(kvm->session); 1077 ret = perf_session__process_events(kvm->session);
1078
1079out_delete:
1080 perf_session__delete(kvm->session);
1081 return ret;
1076} 1082}
1077 1083
1078static int parse_target_str(struct perf_kvm_stat *kvm) 1084static int parse_target_str(struct perf_kvm_stat *kvm)