lkml.org 
[lkml]   [2019]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 069/113] perf top: Fix potential NULL pointer dereference detected by the smatch tool
    Date
    [ Upstream commit 111442cfc8abdeaa7ec1407f07ef7b3e5f76654e ]

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

    tools/perf/builtin-top.c:109
    perf_top__parse_source() warn: variable dereferenced before check 'he'
    (see line 103)

    tools/perf/builtin-top.c:233
    perf_top__show_details() warn: variable dereferenced before check 'he'
    (see line 228)

    tools/perf/builtin-top.c
    101 static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
    102 {
    103 struct perf_evsel *evsel = hists_to_evsel(he->hists);
    ^^^^
    104 struct symbol *sym;
    105 struct annotation *notes;
    106 struct map *map;
    107 int err = -1;
    108
    109 if (!he || !he->ms.sym)
    110 return -1;

    This patch moves the values assignment after validating pointer 'he'.

    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-4-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/builtin-top.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
    index 33eefc33e0ea..d0733251a386 100644
    --- a/tools/perf/builtin-top.c
    +++ b/tools/perf/builtin-top.c
    @@ -99,7 +99,7 @@ static void perf_top__resize(struct perf_top *top)

    static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
    {
    - struct perf_evsel *evsel = hists_to_evsel(he->hists);
    + struct perf_evsel *evsel;
    struct symbol *sym;
    struct annotation *notes;
    struct map *map;
    @@ -108,6 +108,8 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
    if (!he || !he->ms.sym)
    return -1;

    + evsel = hists_to_evsel(he->hists);
    +
    sym = he->ms.sym;
    map = he->ms.map;

    @@ -224,7 +226,7 @@ static void perf_top__record_precise_ip(struct perf_top *top,
    static void perf_top__show_details(struct perf_top *top)
    {
    struct hist_entry *he = top->sym_filter_entry;
    - struct perf_evsel *evsel = hists_to_evsel(he->hists);
    + struct perf_evsel *evsel;
    struct annotation *notes;
    struct symbol *symbol;
    int more;
    @@ -232,6 +234,8 @@ static void perf_top__show_details(struct perf_top *top)
    if (!he)
    return;

    + evsel = hists_to_evsel(he->hists);
    +
    symbol = he->ms.sym;
    notes = symbol__annotation(symbol);

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-29 22:10    [W:4.049 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site