lkml.org 
[lkml]   [2019]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/urgent] perf session: Fix potential NULL pointer dereference found by the smatch tool
    Commit-ID:  f3c8d90757724982e5f07cd77d315eb64ca145ac
    Gitweb: https://git.kernel.org/tip/f3c8d90757724982e5f07cd77d315eb64ca145ac
    Author: Leo Yan <leo.yan@linaro.org>
    AuthorDate: Tue, 2 Jul 2019 18:34:17 +0800
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Tue, 9 Jul 2019 09:33:55 -0300

    perf session: Fix potential NULL pointer dereference found by the smatch tool

    Based on the following report from Smatch, fix the potential
    NULL pointer dereference check.

    tools/perf/util/session.c:1252
    dump_read() error: we previously assumed 'evsel' could be null
    (see line 1249)

    tools/perf/util/session.c
    1240 static void dump_read(struct perf_evsel *evsel, union perf_event *event)
    1241 {
    1242 struct read_event *read_event = &event->read;
    1243 u64 read_format;
    1244
    1245 if (!dump_trace)
    1246 return;
    1247
    1248 printf(": %d %d %s %" PRIu64 "\n", event->read.pid, event->read.tid,
    1249 evsel ? perf_evsel__name(evsel) : "FAIL",
    1250 event->read.value);
    1251
    1252 read_format = evsel->attr.read_format;
    ^^^^^^^

    'evsel' could be NULL pointer, for this case this patch directly bails
    out without dumping read_event.

    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
    Cc: Alexios Zavras <alexios.zavras@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Changbin Du <changbin.du@intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Eric Saint-Etienne <eric.saint.etienne@oracle.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/20190702103420.27540-9-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/session.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
    index 54cf163347f7..2e61dd6a3574 100644
    --- a/tools/perf/util/session.c
    +++ b/tools/perf/util/session.c
    @@ -1249,6 +1249,9 @@ static void dump_read(struct perf_evsel *evsel, union perf_event *event)
    evsel ? perf_evsel__name(evsel) : "FAIL",
    event->read.value);

    + if (!evsel)
    + return;
    +
    read_format = evsel->attr.read_format;

    if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED)
    \
     
     \ /
      Last update: 2019-07-13 12:59    [W:4.338 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site