lkml.org 
[lkml]   [2018]   [Jul]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv5 13/21] arm64: zero GPRs upon entry from EL0
    Date
    We can zero GPRs x0 - x29 upon entry from EL0 to make it harder for
    userspace to control values consumed by speculative gadgets.

    We don't blat x30, since this is stashed much later, and we'll blat it
    before invoking C code.

    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    ---
    arch/arm64/kernel/entry.S | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
    index 22b240da949b..d1440f84668b 100644
    --- a/arch/arm64/kernel/entry.S
    +++ b/arch/arm64/kernel/entry.S
    @@ -53,6 +53,12 @@
    #endif
    .endm

    + .macro clear_gp_regs
    + .irp n,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
    + mov x\n, xzr
    + .endr
    + .endm
    +
    /*
    * Bad Abort numbers
    *-----------------
    @@ -169,6 +175,7 @@ alternative_cb_end
    stp x28, x29, [sp, #16 * 14]

    .if \el == 0
    + clear_gp_regs
    mrs x21, sp_el0
    ldr_this_cpu tsk, __entry_task, x20 // Ensure MDSCR_EL1.SS is clear,
    ldr x19, [tsk, #TSK_TI_FLAGS] // since we can unmask debug
    @@ -176,7 +183,6 @@ alternative_cb_end

    apply_ssbd 1, x22, x23

    - mov x29, xzr // fp pointed to user-space
    .else
    add x21, sp, #S_FRAME_SIZE
    get_thread_info tsk
    --
    2.11.0
    \
     
     \ /
      Last update: 2018-07-11 15:59    [W:4.351 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site