• Masami Hiramatsu's avatar
    perf tools: Fix to put new map after inserting to map_groups in dso__load_sym · 8d5c340d
    Masami Hiramatsu authored
    Fix dso__load_sym to put the map object which is already
    insterted to kmaps.
    
    Refcnt debugger shows
      ==== [0] ====
      Unreclaimed map: 0x39113e0
      Refcount +1 => 1 at
        ./perf(map__new2+0xb5) [0x4be155]
        ./perf(dso__load_sym+0xee1) [0x503461]
        ./perf(dso__load_vmlinux+0xbf) [0x4aa6df]
        ./perf(dso__load_vmlinux_path+0x8c) [0x4aa83c]
        ./perf() [0x50528a]
        ./perf(convert_perf_probe_events+0xd79) [0x50ac29]
        ./perf() [0x45600f]
        ./perf(cmd_probe+0x6c) [0x4566bc]
        ./perf() [0x47abc5]
        ./perf(main+0x610) [0x421f90]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f152368baf5]
        ./perf() [0x4220a9]
      Refcount +1 => 2 at
        ./perf(maps__insert+0x9a) [0x4bfffa]
        ./perf(dso__load_sym+0xf89) [0x503509]
        ./perf(dso__load_vmlinux+0xbf) [0x4aa6df]
        ./perf(dso__load_vmlinux_path+0x8c) [0x4aa83c]
        ./perf() [0x50528a]
        ./perf(convert_perf_probe_events+0xd79) [0x50ac29]
        ./perf() [0x45600f]
        ./perf(cmd_probe+0x6c) [0x4566bc]
        ./perf() [0x47abc5]
        ./perf(main+0x610) [0x421f90]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f152368baf5]
        ./perf() [0x4220a9]
      Refcount -1 => 1 at
        ./perf(map_groups__exit+0x94) [0x4bed04]
        ./perf(machine__delete+0xb0) [0x4b9300]
        ./perf(exit_probe_symbol_maps+0x28) [0x506608]
        ./perf() [0x45628a]
        ./perf(cmd_probe+0x6c) [0x4566bc]
        ./perf() [0x47abc5]
        ./perf(main+0x610) [0x421f90]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f152368baf5]
        ./perf() [0x4220a9]
    
    This means that the dso__load_sym calls map__new2 and maps_insert, both
    of them bump the map refcount, but map_groups__exit will drop just one
    reference.
    
    Fix it by dropping the refcount after inserting it into kmaps.
    Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/20151118064026.30709.50038.stgit@localhost.localdomainSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    8d5c340d
symbol-elf.c 39.9 KB