lkml.org 
[lkml]   [2018]   [Aug]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 31/56] perf report powerpc: Fix crash if callchain is empty
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sandipan Das <sandipan@linux.ibm.com>

    [ Upstream commit 143c99f6ac6812d23254e80844d6e34be897d3e1 ]

    For some cases, the callchain provided by the kernel may be empty. So,
    the callchain ip filtering code will cause a crash if we do not check
    whether the struct ip_callchain pointer is NULL before accessing any
    members.

    This can be observed on a powerpc64le system running Fedora 27 as shown
    below.

    # perf record -b -e cycles:u ls

    Before:

    # perf report --branch-history

    perf: Segmentation fault
    -------- backtrace --------
    perf[0x1027615c]
    linux-vdso64.so.1(__kernel_sigtramp_rt64+0x0)[0x7fff856304d8]
    perf(arch_skip_callchain_idx+0x44)[0x10257c58]
    perf[0x1017f2e4]
    perf(thread__resolve_callchain+0x124)[0x1017ff5c]
    perf(sample__resolve_callchain+0xf0)[0x10172788]
    ...

    After:

    # perf report --branch-history

    Samples: 25 of event 'cycles:u', Event count (approx.): 2306870
    Overhead Source:Line Symbol Shared Object
    + 11.60% _init+35736 [.] _init ls
    + 9.84% strcoll_l.c:137 [.] __strcoll_l libc-2.26.so
    + 9.16% memcpy.S:175 [.] __memcpy_power7 libc-2.26.so
    + 9.01% gconv_charset.h:54 [.] _nl_find_locale libc-2.26.so
    + 8.87% dl-addr.c:52 [.] _dl_addr libc-2.26.so
    + 8.83% _init+236 [.] _init ls
    ...

    Reported-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
    Acked-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/20180611104049.11048-1-sandipan@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/perf/arch/powerpc/util/skip-callchain-idx.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/tools/perf/arch/powerpc/util/skip-callchain-idx.c
    +++ b/tools/perf/arch/powerpc/util/skip-callchain-idx.c
    @@ -230,7 +230,7 @@ int arch_skip_callchain_idx(struct machi
    u64 ip;
    u64 skip_slot = -1;

    - if (chain->nr < 3)
    + if (!chain || chain->nr < 3)
    return skip_slot;

    ip = chain->ips[2];

    \
     
     \ /
      Last update: 2018-08-26 08:50    [W:3.283 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site