Re: [PATCH efi-next] efi/x86: preserve %ebx correctly in efi_set_virtual_address_map()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux