On Tue, Mar 03, 2020 at 09:06:48AM +0100, Ard Biesheuvel wrote: > Even though it is uncommon, there are cases where the Exit() EFI boot > service might return, e.g., when we were booted via the EFI handover > protocol from OVMF and the kernel image was specified on the command > line, in which case Exit() attempts to terminate the boot manager, > which is not an EFI application itself. So let's drop into a deadloop > instead. > > Cc: Nathan Chancellor <natechancellor@xxxxxxxxx> > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > --- > As a side effect, this also fixes [0], which is as yet undiagnosed. > > [0] https://github.com/ClangBuiltLinux/linux/issues/917 And for that: Tested-by: Nathan Chancellor <natechancellor@xxxxxxxxx> # build > drivers/firmware/efi/libstub/x86-stub.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c > index 7f3e97c2aad3..5c7480c4d379 100644 > --- a/drivers/firmware/efi/libstub/x86-stub.c > +++ b/drivers/firmware/efi/libstub/x86-stub.c > @@ -344,7 +344,7 @@ static void setup_graphics(struct boot_params *boot_params) > static void __noreturn efi_exit(efi_handle_t handle, efi_status_t status) > { > efi_bs_call(exit, handle, status, 0, NULL); > - unreachable(); > + for(;;); I thought this would have tripped up clang's -Wempty-body but it doesn't so that is good. > } > > void startup_32(struct boot_params *boot_params); > -- > 2.17.1 >