• Arnaldo Carvalho de Melo's avatar
    perf probe: Free string returned by synthesize_perf_probe_point() on failure to add a probe · 7bc0153c
    Arnaldo Carvalho de Melo authored
    Building perf with EXTRA_CFLAGS="-fsanitize=address" a leak is detect
    when trying to add a probe to a non-existent function:
    
      # perf probe -x ~/bin/perf dso__neW
      Probe point 'dso__neW' not found.
        Error: Failed to add events.
    
      =================================================================
      ==296634==ERROR: LeakSanitizer: detected memory leaks
    
      Direct leak of 128 byte(s) in 1 object(s) allocated from:
          #0 0x7f67642ba097 in calloc (/lib64/libasan.so.8+0xba097)
          #1 0x7f67641a76f1 in allocate_cfi (/lib64/libdw.so.1+0x3f6f1)
    
      Direct leak of 65 byte(s) in 1 object(s) allocated from:
          #0 0x7f67642b95b5 in __interceptor_realloc.part.0 (/lib64/libasan.so.8+0xb95b5)
          #1 0x6cac75 in strbuf_grow util/strbuf.c:64
          #2 0x6ca934 in strbuf_init util/strbuf.c:25
          #3 0x9337d2 in synthesize_perf_probe_point util/probe-event.c:2018
          #4 0x92be51 in try_to_find_probe_trace_events util/probe-event.c:964
          #5 0x93d5c6 in convert_to_probe_trace_events util/probe-event.c:3512
          #6 0x93d6d5 in convert_perf_probe_events util/probe-event.c:3529
          #7 0x56f37f in perf_add_probe_events /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:354
          #8 0x572fbc in __cmd_probe /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:738
          #9 0x5730f2 in cmd_probe /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:766
          #10 0x635d81 in run_builtin /var/home/acme/git/perf-tools-next/tools/perf/perf.c:323
          #11 0x6362c1 in handle_internal_command /var/home/acme/git/perf-tools-next/tools/perf/perf.c:377
          #12 0x63667a in run_argv /var/home/acme/git/perf-tools-next/tools/perf/perf.c:421
          #13 0x636b8d in main /var/home/acme/git/perf-tools-next/tools/perf/perf.c:537
          #14 0x7f676302950f in __libc_start_call_main (/lib64/libc.so.6+0x2950f)
    
      SUMMARY: AddressSanitizer: 193 byte(s) leaked in 2 allocation(s).
      #
    
    synthesize_perf_probe_point() returns a "detachec" strbuf, i.e. a
    malloc'ed string that needs to be free'd.
    
    An audit will be performed to find other such cases.
    Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/lkml/ZM0l1Oxamr4SVjfY@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    7bc0153c
probe-event.c 87.2 KB