]> git.baikalelectronics.ru Git - kernel.git/commit
x86/boot: Use unsigned comparison for addresses
authorArvind Sankar <nivedita@alum.mit.edu>
Sun, 8 Mar 2020 08:08:44 +0000 (09:08 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Apr 2020 08:50:03 +0000 (10:50 +0200)
commita9ea27b78aaf79af61347bc16af4d1701d239444
tree7828c9cfef3e319042b82dd6f8f03a2ee9ec5b47
parent53579368601425d28fc12527e3a21df57b846d98
x86/boot: Use unsigned comparison for addresses

[ Upstream commit 563916411ea1732b06e8c8dda277220e3e8b37ab ]

The load address is compared with LOAD_PHYSICAL_ADDR using a signed
comparison currently (using jge instruction).

When loading a 64-bit kernel using the new efi32_pe_entry() point added by:

  feadc4429ea9 ("efi/x86: Add true mixed mode entry point into .compat section")

using Qemu with -m 3072, the firmware actually loads us above 2Gb,
resulting in a very early crash.

Use the JAE instruction to perform a unsigned comparison instead, as physical
addresses should be considered unsigned.

Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200301230436.2246909-6-nivedita@alum.mit.edu
Link: https://lore.kernel.org/r/20200308080859.21568-14-ardb@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/boot/compressed/head_32.S
arch/x86/boot/compressed/head_64.S