• Jiri Olsa's avatar
    perf tools: Fix segfault in cpu_cache_level__read() · 0216234c
    Jiri Olsa authored
    We release wrong pointer on error path in cpu_cache_level__read
    function, leading to segfault:
    
      (gdb) r record ls
      Starting program: /root/perf/tools/perf/perf record ls
      ...
      [ perf record: Woken up 1 times to write data ]
      double free or corruption (out)
    
      Thread 1 "perf" received signal SIGABRT, Aborted.
      0x00007ffff7463798 in raise () from /lib64/power9/libc.so.6
      (gdb) bt
      #0  0x00007ffff7463798 in raise () from /lib64/power9/libc.so.6
      #1  0x00007ffff7443bac in abort () from /lib64/power9/libc.so.6
      #2  0x00007ffff74af8bc in __libc_message () from /lib64/power9/libc.so.6
      #3  0x00007ffff74b92b8 in malloc_printerr () from /lib64/power9/libc.so.6
      #4  0x00007ffff74bb874 in _int_free () from /lib64/power9/libc.so.6
      #5  0x0000000010271260 in __zfree (ptr=0x7fffffffa0b0) at ../../lib/zalloc..
      #6  0x0000000010139340 in cpu_cache_level__read (cache=0x7fffffffa090, cac..
      #7  0x0000000010143c90 in build_caches (cntp=0x7fffffffa118, size=<optimiz..
      ...
    
    Releasing the proper pointer.
    
    Fixes: 720e98b5 ("perf tools: Add perf data cache feature")
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org: # v4.6+
    Link: http://lore.kernel.org/lkml/20190912105235.10689-1-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    0216234c
header.c 82.7 KB