Skip to content

Commit

Permalink
efi/x86: Preserve %ebx correctly in efi_set_virtual_address_map()
Browse files Browse the repository at this point in the history
Commit:

  59f2a61 ("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 <[email protected]>
Tested-by: Guenter Roeck <[email protected]>
Signed-off-by: Ard Biesheuvel <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Link: https://lore.kernel.org/r/[email protected]
  • Loading branch information
ardbiesheuvel authored and Ingo Molnar committed Mar 8, 2020
1 parent dd09fad commit 57648ad
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion arch/x86/platform/efi/efi_stub_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit 57648ad

Please sign in to comment.