lkml.org 
[lkml]   [2016]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf callchain: Check return value of add_child()
    Commit-ID:  7565bd39c1a63c82350d26a66ea1a1f1bb49ad2e
    Gitweb: http://git.kernel.org/tip/7565bd39c1a63c82350d26a66ea1a1f1bb49ad2e
    Author: Namhyung Kim <namhyung@kernel.org>
    AuthorDate: Tue, 16 Feb 2016 23:08:20 +0900
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 19 Feb 2016 19:12:52 -0300

    perf callchain: Check return value of add_child()

    The create_child() in add_child() can return NULL in case of memory
    allocation failure. So check the return value and bail out. The proper
    error handling will be added later.

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1455631723-17345-3-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/callchain.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
    index 53c43eb..134d88b 100644
    --- a/tools/perf/util/callchain.c
    +++ b/tools/perf/util/callchain.c
    @@ -453,6 +453,9 @@ add_child(struct callchain_node *parent,
    struct callchain_node *new;

    new = create_child(parent, false);
    + if (new == NULL)
    + return NULL;
    +
    fill_node(new, cursor);

    new->children_hit = 0;
    @@ -524,6 +527,8 @@ split_add_child(struct callchain_node *parent,

    node = callchain_cursor_current(cursor);
    new = add_child(parent, cursor, period);
    + if (new == NULL)
    + return;

    /*
    * This is second child since we moved parent's children
    @@ -585,6 +590,9 @@ append_chain_children(struct callchain_node *root,
    }
    /* nothing in children, add to the current node */
    rnode = add_child(root, cursor, period);
    + if (rnode == NULL)
    + return;
    +
    rb_link_node(&rnode->rb_node_in, parent, p);
    rb_insert_color(&rnode->rb_node_in, &root->rb_root_in);

    \
     
     \ /
      Last update: 2016-02-20 13:01    [W:4.170 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site