lkml.org 
[lkml]   [2022]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/core] x86/ibt,ftrace: Annotate ftrace code patching
    The following commit has been merged into the x86/core branch of tip:

    Commit-ID: 3215de84c06d747bb748b98945add83e3ec8a6e2
    Gitweb: https://git.kernel.org/tip/3215de84c06d747bb748b98945add83e3ec8a6e2
    Author: Peter Zijlstra <peterz@infradead.org>
    AuthorDate: Tue, 08 Mar 2022 16:30:41 +01:00
    Committer: Peter Zijlstra <peterz@infradead.org>
    CommitterDate: Tue, 15 Mar 2022 10:32:41 +01:00

    x86/ibt,ftrace: Annotate ftrace code patching

    These are code patching sites, not indirect targets.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lore.kernel.org/r/20220308154318.936599479@infradead.org
    ---
    arch/x86/kernel/ftrace_64.S | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/arch/x86/kernel/ftrace_64.S b/arch/x86/kernel/ftrace_64.S
    index e32b5cd..4ec1360 100644
    --- a/arch/x86/kernel/ftrace_64.S
    +++ b/arch/x86/kernel/ftrace_64.S
    @@ -145,6 +145,7 @@ SYM_FUNC_START(ftrace_caller)
    movq %rcx, RSP(%rsp)

    SYM_INNER_LABEL(ftrace_caller_op_ptr, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    /* Load the ftrace_ops into the 3rd parameter */
    movq function_trace_op(%rip), %rdx

    @@ -155,6 +156,7 @@ SYM_INNER_LABEL(ftrace_caller_op_ptr, SYM_L_GLOBAL)
    movq $0, CS(%rsp)

    SYM_INNER_LABEL(ftrace_call, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    call ftrace_stub

    /* Handlers can change the RIP */
    @@ -169,6 +171,7 @@ SYM_INNER_LABEL(ftrace_call, SYM_L_GLOBAL)
    * layout here.
    */
    SYM_INNER_LABEL(ftrace_caller_end, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR

    jmp ftrace_epilogue
    SYM_FUNC_END(ftrace_caller);
    @@ -192,6 +195,7 @@ SYM_FUNC_START(ftrace_regs_caller)
    /* save_mcount_regs fills in first two parameters */

    SYM_INNER_LABEL(ftrace_regs_caller_op_ptr, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    /* Load the ftrace_ops into the 3rd parameter */
    movq function_trace_op(%rip), %rdx

    @@ -221,6 +225,7 @@ SYM_INNER_LABEL(ftrace_regs_caller_op_ptr, SYM_L_GLOBAL)
    leaq (%rsp), %rcx

    SYM_INNER_LABEL(ftrace_regs_call, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    call ftrace_stub

    /* Copy flags back to SS, to restore them */
    @@ -248,6 +253,7 @@ SYM_INNER_LABEL(ftrace_regs_call, SYM_L_GLOBAL)
    */
    testq %rax, %rax
    SYM_INNER_LABEL(ftrace_regs_caller_jmp, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    jnz 1f

    restore_mcount_regs
    @@ -261,6 +267,7 @@ SYM_INNER_LABEL(ftrace_regs_caller_jmp, SYM_L_GLOBAL)
    * to the return.
    */
    SYM_INNER_LABEL(ftrace_regs_caller_end, SYM_L_GLOBAL)
    + ANNOTATE_NOENDBR
    jmp ftrace_epilogue

    /* Swap the flags with orig_rax */
    \
     
     \ /
      Last update: 2022-03-15 11:46    [W:7.305 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site