lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 1101/1157] s390/unwind: fix fgraph return address recovery
    Date
    From: Sumanth Korikkar <sumanthk@linux.ibm.com>

    [ Upstream commit ded466e1806686794b403ebf031133bbaca76bb2 ]

    When HAVE_FUNCTION_GRAPH_RET_ADDR_PTR is defined, the return
    address to the fgraph caller is recovered by tagging it along with the
    stack pointer of ftrace stack. This makes the stack unwinding more
    reliable.

    When the fgraph return address is modified to return_to_handler,
    ftrace_graph_ret_addr tries to restore it to the original
    value using tagged stack pointer.

    Fix this by passing tagged sp to ftrace_graph_ret_addr.

    Fixes: d81675b60d09 ("s390/unwind: recover kretprobe modified return address in stacktrace")
    Cc: <stable@vger.kernel.org> # 5.18
    Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/s390/include/asm/unwind.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/s390/include/asm/unwind.h b/arch/s390/include/asm/unwind.h
    index 0bf06f1682d8..02462e7100c1 100644
    --- a/arch/s390/include/asm/unwind.h
    +++ b/arch/s390/include/asm/unwind.h
    @@ -47,7 +47,7 @@ struct unwind_state {
    static inline unsigned long unwind_recover_ret_addr(struct unwind_state *state,
    unsigned long ip)
    {
    - ip = ftrace_graph_ret_addr(state->task, &state->graph_idx, ip, NULL);
    + ip = ftrace_graph_ret_addr(state->task, &state->graph_idx, ip, (void *)state->sp);
    if (is_kretprobe_trampoline(ip))
    ip = kretprobe_find_ret_addr(state->task, (void *)state->sp, &state->kr_cur);
    return ip;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-16 03:04    [W:4.048 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site