lkml.org 
[lkml]   [2011]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/urgent] perf symbols: Properly align symbol_conf.priv_size
    Commit-ID:  4d439517561d009e170e2fe20be1ba25e19abe75
    Gitweb: http://git.kernel.org/tip/4d439517561d009e170e2fe20be1ba25e19abe75
    Author: David S. Miller <davem@davemloft.net>
    AuthorDate: Tue, 29 Mar 2011 14:18:39 -0300
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Tue, 29 Mar 2011 14:18:39 -0300

    perf symbols: Properly align symbol_conf.priv_size

    If symbol_conf.priv_size is not a multiple of "sizeof(u64)" we'll bus
    error on sparc64 in symbol__new because the "struct symbol *" pointer
    is computed by adding symbol_conf.priv_size to the memory allocated.

    We cannot isolate the fix to symbol__new and symbol__delete since the
    private area is computed by subtracting the priv_size value from a
    "struct symbol" pointer, so then the private area can still be
    potentially unaligned.

    So, simply align the symbol_conf.priv_size value in symbol__init()

    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    LKML-Reference: <20110328.175849.112593455.davem@davemloft.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/symbol.c | 2 ++
    1 files changed, 2 insertions(+), 0 deletions(-)

    diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
    index 8f73907..f06c10f 100644
    --- a/tools/perf/util/symbol.c
    +++ b/tools/perf/util/symbol.c
    @@ -2406,6 +2406,8 @@ int symbol__init(void)
    if (symbol_conf.initialized)
    return 0;

    + symbol_conf.priv_size = ALIGN(symbol_conf.priv_size, sizeof(u64));
    +
    elf_version(EV_CURRENT);
    if (symbol_conf.sort_by_name)
    symbol_conf.priv_size += (sizeof(struct symbol_name_rb_node) -

    \
     
     \ /
      Last update: 2011-03-30 09:19    [W:0.030 / U:2.404 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site