lkml.org 
[lkml]   [2022]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 112/130] x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n
    Date
    From: Josh Poimboeuf <jpoimboe@kernel.org>

    commit b2620facef4889fefcbf2e87284f34dcd4189bce upstream.

    If a kernel is built with CONFIG_RETPOLINE=n, but the user still wants
    to mitigate Spectre v2 using IBRS or eIBRS, the RSB filling will be
    silently disabled.

    There's nothing retpoline-specific about RSB buffer filling. Remove the
    CONFIG_RETPOLINE guards around it.

    Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/entry/entry_32.S | 2 --
    arch/x86/entry/entry_64.S | 2 --
    arch/x86/include/asm/nospec-branch.h | 2 --
    3 files changed, 6 deletions(-)

    --- a/arch/x86/entry/entry_32.S
    +++ b/arch/x86/entry/entry_32.S
    @@ -782,7 +782,6 @@ SYM_CODE_START(__switch_to_asm)
    movl %ebx, PER_CPU_VAR(stack_canary)+stack_canary_offset
    #endif

    -#ifdef CONFIG_RETPOLINE
    /*
    * When switching from a shallower to a deeper call stack
    * the RSB may either underflow or use entries populated
    @@ -791,7 +790,6 @@ SYM_CODE_START(__switch_to_asm)
    * speculative execution to prevent attack.
    */
    FILL_RETURN_BUFFER %ebx, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_CTXSW
    -#endif

    /* Restore flags or the incoming task to restore AC state. */
    popfl
    --- a/arch/x86/entry/entry_64.S
    +++ b/arch/x86/entry/entry_64.S
    @@ -249,7 +249,6 @@ SYM_FUNC_START(__switch_to_asm)
    movq %rbx, PER_CPU_VAR(fixed_percpu_data) + stack_canary_offset
    #endif

    -#ifdef CONFIG_RETPOLINE
    /*
    * When switching from a shallower to a deeper call stack
    * the RSB may either underflow or use entries populated
    @@ -258,7 +257,6 @@ SYM_FUNC_START(__switch_to_asm)
    * speculative execution to prevent attack.
    */
    FILL_RETURN_BUFFER %r12, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_CTXSW
    -#endif

    /* restore callee-saved registers */
    popq %r15
    --- a/arch/x86/include/asm/nospec-branch.h
    +++ b/arch/x86/include/asm/nospec-branch.h
    @@ -122,11 +122,9 @@
    * monstrosity above, manually.
    */
    .macro FILL_RETURN_BUFFER reg:req nr:req ftr:req
    -#ifdef CONFIG_RETPOLINE
    ALTERNATIVE "jmp .Lskip_rsb_\@", "", \ftr
    __FILL_RETURN_BUFFER(\reg,\nr,%_ASM_SP)
    .Lskip_rsb_\@:
    -#endif
    .endm

    /*

    \
     
     \ /
      Last update: 2022-07-12 20:58    [W:2.136 / U:0.224 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site