On Fri, 18 Oct 2019 at 18:11, Sami Tolvanen <samitolvanen@xxxxxxxxxx> wrote: > > If we detect a corrupted x18 and SCS is enabled, restore the register > before jumping back to instrumented code. > You'll have to elaborate a bit here and explain that this is sufficient, given that we run EFI runtime services with interrupts enabled. > Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx> > --- > 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.23.0.866.gb869b98d4c-goog >