• Numfor Mbiziwo-Tiapo's avatar
    perf header: Fix use of unitialized value warning · 20f9781f
    Numfor Mbiziwo-Tiapo authored
    When building our local version of perf with MSAN (Memory Sanitizer) and
    running the perf record command, MSAN throws a use of uninitialized
    value warning in "tools/perf/util/util.c:333:6".
    
    This warning stems from the "buf" variable being passed into "write".
    It originated as the variable "ev" with the type union perf_event*
    defined in the "perf_event__synthesize_attr" function in
    "tools/perf/util/header.c".
    
    In the "perf_event__synthesize_attr" function they allocate space with a malloc
    call using ev, then go on to only assign some of the member variables before
    passing "ev" on as a parameter to the "process" function therefore "ev"
    contains uninitialized memory. Changing the malloc call to zalloc to initialize
    all the members of "ev" which gets rid of the warning.
    
    To reproduce this warning, build perf by running:
    make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory\
     -fsanitize-memory-track-origins"
    
    (Additionally, llvm might have to be installed and clang might have to
    be specified as the compiler - export CC=/usr/bin/clang)
    
    then running:
    tools/perf/perf record -o - ls / | tools/perf/perf --no-pager annotate\
     -i - --stdio
    
    Please see the cover letter for why false positive warnings may be
    generated.
    Signed-off-by: default avatarNumfor Mbiziwo-Tiapo <nums@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.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/20190724234500.253358-2-nums@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    20f9781f
header.c 90.7 KB