linux: Exit bootservices *before* saving the memory map in the zero page
diff --git a/stage23/protos/linux.c b/stage23/protos/linux.c
index af3c1811..60279c3d 100644
--- a/stage23/protos/linux.c
+++ b/stage23/protos/linux.c
@@ -535,6 +535,8 @@ void linux_load(char *config, char *cmdline) {
// UEFI
///////////////////////////////////////
#if defined (uefi)
+ efi_exit_boot_services();
+
memcpy(&boot_params->efi_info.efi_loader_signature, "EL64", 4);
boot_params->efi_info.efi_systab = (uint32_t)(uintptr_t)gST;
boot_params->efi_info.efi_systab_hi = (uint32_t)((uintptr_t)gST >> 32);
@@ -543,8 +545,6 @@ void linux_load(char *config, char *cmdline) {
boot_params->efi_info.efi_memmap_size = efi_mmap_size;
boot_params->efi_info.efi_memdesc_size = efi_desc_size;
boot_params->efi_info.efi_memdesc_version = efi_desc_ver;
-
- efi_exit_boot_services();
#endif
///////////////////////////////////////
