perf probe: Fix to close probe_events file in error

Fix perf-probe to close probe_events file if it failed to get existing
probe's name. This also fix the return error code to -ENOMEM.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: hemant@linux.vnet.ibm.com
Link: http://lkml.kernel.org/r/20150506124640.4961.26062.stgit@localhost.localdomain
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Masami Hiramatsu 2015-05-06 21:46:40 +09:00 committed by Arnaldo Carvalho de Melo
parent cb30711374
commit ae2cb1ac60

View File

@ -2384,7 +2384,8 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
namelist = get_probe_trace_event_names(fd, false); namelist = get_probe_trace_event_names(fd, false);
if (!namelist) { if (!namelist) {
pr_debug("Failed to get current event list.\n"); pr_debug("Failed to get current event list.\n");
return -EIO; ret = -ENOMEM;
goto close_out;
} }
/* Get kprobe blacklist if exists */ /* Get kprobe blacklist if exists */
if (!pev->uprobes) { if (!pev->uprobes) {
@ -2467,6 +2468,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
kprobe_blacklist__delete(&blacklist); kprobe_blacklist__delete(&blacklist);
strlist__delete(namelist); strlist__delete(namelist);
close_out:
close(fd); close(fd);
return ret; return ret;
} }