mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 19:05:39 +00:00
efi/x86: Preserve %ebx correctly in efi_set_virtual_address_map()
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@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20200304133515.15035-1-ardb@kernel.org Link: https://lore.kernel.org/r/20200308080859.21568-22-ardb@kernel.org
This commit is contained in:
parent
dd09fad9d2
commit
57648adb31
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user