lkml.org 
[lkml]   [2019]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v5 11/14] arm64: efi: restore x18 if it was corrupted
    From
    If we detect a corrupted x18 and SCS is enabled, restore the register
    before jumping back to instrumented code. This is safe, because the
    wrapper is called with preemption disabled and a separate shadow stack
    is used for interrupt handling.

    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    ---
    arch/arm64/kernel/efi-rt-wrapper.S | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/arch/arm64/kernel/efi-rt-wrapper.S b/arch/arm64/kernel/efi-rt-wrapper.S
    index 3fc71106cb2b..945744f16086 100644
    --- a/arch/arm64/kernel/efi-rt-wrapper.S
    +++ b/arch/arm64/kernel/efi-rt-wrapper.S
    @@ -34,5 +34,10 @@ ENTRY(__efi_rt_asm_wrapper)
    ldp x29, x30, [sp], #32
    b.ne 0f
    ret
    -0: b efi_handle_corrupted_x18 // tail call
    +0:
    +#ifdef CONFIG_SHADOW_CALL_STACK
    + /* Restore x18 before returning to instrumented code. */
    + mov x18, x2
    +#endif
    + b efi_handle_corrupted_x18 // tail call
    ENDPROC(__efi_rt_asm_wrapper)
    --
    2.24.0.rc1.363.gb1bccd3e3d-goog
    \
     
     \ /
      Last update: 2019-11-06 00:57    [W:4.040 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site