lkml.org 
[lkml]   [2017]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf stat: Fix saved values rbtree lookup
    Commit-ID:  5e97665f91d343b5bcf1f92249e45e18987ffd00
    Gitweb: http://git.kernel.org/tip/5e97665f91d343b5bcf1f92249e45e18987ffd00
    Author: Andi Kleen <ak@linux.intel.com>
    AuthorDate: Mon, 24 Jul 2017 16:40:03 -0700
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 11 Aug 2017 10:42:52 -0300

    perf stat: Fix saved values rbtree lookup

    The stat shadow saved values rbtree is indexed by a pointer. Fix the
    comparison function:

    - We cannot return a pointer delta as an int because that loses bits on
    64bit.

    - Doing pointer arithmetic on the struct pointer only works if the
    objects are spaced by the multiple of the object size, which is not
    guaranteed for individual malloc'ed object

    Replace it with a proper comparison.

    This fixes various problems with values not being found.

    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/20170724234015.5165-4-andi@firstfloor.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/stat-shadow.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
    index 719d6cb..a04cf56 100644
    --- a/tools/perf/util/stat-shadow.c
    +++ b/tools/perf/util/stat-shadow.c
    @@ -70,7 +70,11 @@ static int saved_value_cmp(struct rb_node *rb_node, const void *entry)
    return a->ctx - b->ctx;
    if (a->cpu != b->cpu)
    return a->cpu - b->cpu;
    - return a->evsel - b->evsel;
    + if (a->evsel == b->evsel)
    + return 0;
    + if ((char *)a->evsel < (char *)b->evsel)
    + return -1;
    + return +1;
    }

    static struct rb_node *saved_value_new(struct rblist *rblist __maybe_unused,
    \
     
     \ /
      Last update: 2017-08-14 19:46    [W:4.136 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site