perf record: Fixup return path of cmd_record()
Namhyung Kim [Fri, 15 Mar 2013 05:48:51 +0000 (14:48 +0900)]
The error path of calling perf_target__parse_uid wrongly went to
out_free_fd.  Also add missing evlist cleanup routines.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1363326533-3310-4-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

tools/perf/builtin-record.c

index 80cc3ea..9f2344a 100644 (file)
@@ -1028,7 +1028,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
                ui__error("%s", errbuf);
 
                err = -saved_errno;
-               goto out_free_fd;
+               goto out_symbol_exit;
        }
 
        err = -ENOMEM;
@@ -1059,6 +1059,9 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
        }
 
        err = __cmd_record(&record, argc, argv);
+
+       perf_evlist__munmap(evsel_list);
+       perf_evlist__close(evsel_list);
 out_free_fd:
        perf_evlist__delete_maps(evsel_list);
 out_symbol_exit: