On Wed, Mar 04, 2020 at 02:35:15PM +0100, Ard Biesheuvel wrote: > Commit 59f2a619a2db8611 ("efi: Add 'runtime' pointer to struct efi") > modified the assembler routine called by efi_set_virtual_address_map(), > to grab the 'runtime' EFI service pointer while running with paging > disabled (which is tricky to do in C code) > > After the change, register %ebx is not restored correctly, resulting > in all kinds of weird behavior, so fix that. > > Reported-by: Guenter Roeck <linux@xxxxxxxxxxxx> > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx> (on top of next-20200304) Thanks for the quick fix! Guenter > --- > arch/x86/platform/efi/efi_stub_32.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/platform/efi/efi_stub_32.S b/arch/x86/platform/efi/efi_stub_32.S > index 09237236fb25..09ec84f6ef51 100644 > --- a/arch/x86/platform/efi/efi_stub_32.S > +++ b/arch/x86/platform/efi/efi_stub_32.S > @@ -54,7 +54,7 @@ SYM_FUNC_START(efi_call_svam) > orl $0x80000000, %edx > movl %edx, %cr0 > > - pop %ebx > + movl 16(%esp), %ebx > leave > ret > SYM_FUNC_END(efi_call_svam) > -- > 2.17.1 >