• Jiri Olsa's avatar
    perf stat: Fix segfault for event group in repeat mode · 08ef3af1
    Jiri Olsa authored
    Numfor Mbiziwo-Tiapo reported segfault on stat of event group in repeat
    mode:
    
      # perf stat -e '{cycles,instructions}' -r 10 ls
    
    It's caused by memory corruption due to not cleaned evsel's id array and
    index, which needs to be rebuilt in every stat iteration. Currently the
    ids index grows, while the array (which is also not freed) has the same
    size.
    
    Fixing this by releasing id array and zeroing ids index in
    perf_evsel__close function.
    
    We also need to keep the evsel_list alive for stat record (which is
    disabled in repeat mode).
    Reported-by: default avatarNumfor Mbiziwo-Tiapo <nums@google.com>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Mark Drayton <mbd@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/20190715142121.GC6032@kravaSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    08ef3af1
evsel.c 75.3 KB