perf probe: Fix to close dwarf when failing to analyze it
Masami Hiramatsu [Fri, 2 Apr 2010 16:50:59 +0000 (12:50 -0400)]
Fix to close libdw routine when failing to analyze it in
find_perf_probe_point().

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
LKML-Reference: <20100402165059.23551.95587.stgit@localhost6.localdomain6>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

tools/perf/util/probe-finder.c

index 59b0115..a851377 100644 (file)
@@ -818,8 +818,10 @@ int find_perf_probe_point(int fd, unsigned long addr,
                return -ENOENT;
 
        /* Find cu die */
-       if (!dwarf_addrdie(dbg, (Dwarf_Addr)addr, &cudie))
-               return -EINVAL;
+       if (!dwarf_addrdie(dbg, (Dwarf_Addr)addr, &cudie)) {
+               ret = -EINVAL;
+               goto end;
+       }
 
        /* Find a corresponding line */
        line = dwarf_getsrc_die(&cudie, (Dwarf_Addr)addr);