diff --git a/xtldr/modules/xtos_o/amd64/memory.c b/xtldr/modules/xtos_o/amd64/memory.c index 807834b..e227867 100644 --- a/xtldr/modules/xtos_o/amd64/memory.c +++ b/xtldr/modules/xtos_o/amd64/memory.c @@ -140,7 +140,20 @@ XtEnablePaging(IN PLIST_ENTRY MemoryMappings, if(Status != STATUS_EFI_SUCCESS) { /* Failed to exit boot services */ - XtLdrProtocol->Debug.Print(L"Failed to exit boot services (Status code: %lx)\n", Status); + Status = XtLdrProtocol->Memory.GetMemoryMap(MemoryMap); + if(Status != STATUS_EFI_SUCCESS) + { + /* Unable to get memory map */ + return Status; + } + + Status = XtLdrProtocol->Util.ExitBootServices(MemoryMap->MapKey); + } + + /* Check if exitted boot services successfully */ + if(Status != STATUS_EFI_SUCCESS) + { + XtLdrProtocol->Console.Print(L"Failed to exit boot services (Status code: %lx)\n", Status); return STATUS_EFI_ABORTED; }