lkml.org 
[lkml]   [2015]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.4 65/91] MIPS: mcount: Adjust stack pointer for static trace in MIPS32
    Date
    From: Markos Chandras <markos.chandras@imgtec.com>

    3.4.105-rc1 review patch. If anyone has any objections, please let me know.

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


    commit 8a574cfa2652545eb95595d38ac2a0bb501af0ae upstream.

    Every mcount() call in the MIPS 32-bit kernel is done as follows:

    [...]
    move at, ra
    jal _mcount
    addiu sp, sp, -8
    [...]

    but upon returning from the mcount() function, the stack pointer
    is not adjusted properly. This is explained in details in 58b69401c797
    (MIPS: Function tracer: Fix broken function tracing).

    Commit ad8c396936e3 ("MIPS: Unbreak function tracer for 64-bit kernel.)
    fixed the stack manipulation for 64-bit but it didn't fix it completely
    for MIPS32.

    Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/7792/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Zefan Li <lizefan@huawei.com>
    ---
    arch/mips/kernel/mcount.S | 12 ++++++++++++
    1 file changed, 12 insertions(+)

    diff --git a/arch/mips/kernel/mcount.S b/arch/mips/kernel/mcount.S
    index 4c968e7..55eca41 100644
    --- a/arch/mips/kernel/mcount.S
    +++ b/arch/mips/kernel/mcount.S
    @@ -119,7 +119,11 @@ NESTED(_mcount, PT_SIZE, ra)
    nop
    #endif
    b ftrace_stub
    +#ifdef CONFIG_32BIT
    + addiu sp, sp, 8
    +#else
    nop
    +#endif

    static_trace:
    MCOUNT_SAVE_REGS
    @@ -129,6 +133,9 @@ static_trace:
    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
    @@ -177,6 +184,11 @@ NESTED(ftrace_graph_caller, PT_SIZE, ra)
    jal prepare_ftrace_return
    nop
    MCOUNT_RESTORE_REGS
    +#ifndef CONFIG_DYNAMIC_FTRACE
    +#ifdef CONFIG_32BIT
    + addiu sp, sp, 8
    +#endif
    +#endif
    RETURN_BACK
    END(ftrace_graph_caller)

    --
    1.9.1


    \
     
     \ /
      Last update: 2015-01-28 06:21    [W:4.128 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site