Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Taeung Song and committed by
Arnaldo Carvalho de Melo
41b98360 07a716ff

+10 -4
+10 -4
tools/perf/builtin-kvm.c
··· 1061 1061 1062 1062 symbol__init(&kvm->session->header.env); 1063 1063 1064 - if (!perf_session__has_traces(kvm->session, "kvm record")) 1065 - return -EINVAL; 1064 + if (!perf_session__has_traces(kvm->session, "kvm record")) { 1065 + ret = -EINVAL; 1066 + goto out_delete; 1067 + } 1066 1068 1067 1069 /* 1068 1070 * Do not use 'isa' recorded in kvm_exit tracepoint since it is not ··· 1072 1070 */ 1073 1071 ret = cpu_isa_config(kvm); 1074 1072 if (ret < 0) 1075 - return ret; 1073 + goto out_delete; 1076 1074 1077 - return perf_session__process_events(kvm->session); 1075 + ret = perf_session__process_events(kvm->session); 1076 + 1077 + out_delete: 1078 + perf_session__delete(kvm->session); 1079 + return ret; 1078 1080 } 1079 1081 1080 1082 static int parse_target_str(struct perf_kvm_stat *kvm)