• Ard Biesheuvel's avatar
    efi/libstub/x86: Use Exit() boot service to exit the stub on errors · 3b8f44fc
    Ard Biesheuvel authored
    Currently, we either return with an error [from efi_pe_entry()] or
    enter a deadloop [in efi_main()] if any fatal errors occur during
    execution of the EFI stub. Let's switch to calling the Exit() EFI boot
    service instead in both cases, so that we
    a) can get rid of the deadloop, and simply return to the boot manager
       if any errors occur during execution of the stub, including during
       the call to ExitBootServices(),
    b) can also return cleanly from efi_pe_entry() or efi_main() in mixed
       mode, once we introduce support for LoadImage/StartImage based mixed
       mode in the next patch.
    
    Note that on systems running downstream GRUBs [which do not use LoadImage
    or StartImage to boot the kernel, and instead, pass their own image
    handle as the loaded image handle], calling Exit() will exit from GRUB
    rather than from the kernel, but this is a tolerable side effect.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    3b8f44fc
x86-stub.c 20.2 KB