lkml.org 
[lkml]   [2018]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 035/220] mips: ftrace: fix static function graph tracing
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

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

    From: Matthias Schiffer <mschiffer@universe-factory.net>

    commit 6fb8656646f996d1eef42e6d56203c4915cb9e08 upstream.

    ftrace_graph_caller was never run after calling ftrace_trace_function,
    breaking the function graph tracer. Fix this, bringing it in line with the
    x86 implementation.

    While we're at it, also streamline the control flow of _mcount a bit to
    reduce the number of branches.

    This issue was reported before:
    https://www.linux-mips.org/archives/linux-mips/2014-11/msg00295.html

    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Tested-by: Matt Redfearn <matt.redfearn@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/18929/
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: stable@vger.kernel.org # v3.17+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/mips/kernel/mcount.S | 27 ++++++++++++---------------
    1 file changed, 12 insertions(+), 15 deletions(-)

    --- a/arch/mips/kernel/mcount.S
    +++ b/arch/mips/kernel/mcount.S
    @@ -119,10 +119,20 @@ NESTED(_mcount, PT_SIZE, ra)
    EXPORT_SYMBOL(_mcount)
    PTR_LA t1, ftrace_stub
    PTR_L t2, ftrace_trace_function /* Prepare t2 for (1) */
    - bne t1, t2, static_trace
    + beq t1, t2, fgraph_trace
    nop

    + MCOUNT_SAVE_REGS
    +
    + move a0, ra /* arg1: self return address */
    + jalr t2 /* (1) call *ftrace_trace_function */
    + move a1, AT /* arg2: parent's return address */
    +
    + MCOUNT_RESTORE_REGS
    +
    +fgraph_trace:
    #ifdef CONFIG_FUNCTION_GRAPH_TRACER
    + PTR_LA t1, ftrace_stub
    PTR_L t3, ftrace_graph_return
    bne t1, t3, ftrace_graph_caller
    nop
    @@ -131,24 +141,11 @@ EXPORT_SYMBOL(_mcount)
    bne t1, t3, ftrace_graph_caller
    nop
    #endif
    - b ftrace_stub
    -#ifdef CONFIG_32BIT
    - addiu sp, sp, 8
    -#else
    - nop
    -#endif
    -
    -static_trace:
    - MCOUNT_SAVE_REGS
    -
    - move a0, ra /* arg1: self return address */
    - jalr t2 /* (1) call *ftrace_trace_function */
    - move a1, AT /* arg2: parent's return address */

    - MCOUNT_RESTORE_REGS
    #ifdef CONFIG_32BIT
    addiu sp, sp, 8
    #endif
    +
    .globl ftrace_stub
    ftrace_stub:
    RETURN_BACK

    \
     
     \ /
      Last update: 2018-07-01 18:39    [W:4.158 / U:1.468 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site