diff mbox series

efi_loader: Fix return value for efi_add_runtime_mmio

Message ID 20180315140816.10844-1-agraf@suse.de
State Accepted
Commit 813468cdbd7287f0b2e38f9702aa3eee37b1c5b5
Headers show
Series efi_loader: Fix return value for efi_add_runtime_mmio | expand

Commit Message

Alexander Graf March 15, 2018, 2:08 p.m. UTC
The efi_add_runtime_mmio function incorrectly returned the added
address as return value rather than EFI_SUCCESS. Fix it by checking
the return value of efi_add_memory_map properly.

Fixes: f057cfef5dc ("efi_loader: exit status for efi_reset_system_init")
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 lib/efi_loader/efi_runtime.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Comments

Alexander Graf April 4, 2018, 9:51 a.m. UTC | #1
> The efi_add_runtime_mmio function incorrectly returned the added
> address as return value rather than EFI_SUCCESS. Fix it by checking
> the return value of efi_add_memory_map properly.
> 
> Fixes: f057cfef5dc ("efi_loader: exit status for efi_reset_system_init")
> Signed-off-by: Alexander Graf <agraf@suse.de>

Thanks, applied to efi-next

Alex
diff mbox series

Patch

diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c
index 0888316140..8558124c0a 100644
--- a/lib/efi_loader/efi_runtime.c
+++ b/lib/efi_loader/efi_runtime.c
@@ -349,13 +349,13 @@  static efi_status_t EFIAPI efi_set_virtual_address_map(
 efi_status_t efi_add_runtime_mmio(void *mmio_ptr, u64 len)
 {
 	struct efi_runtime_mmio_list *newmmio;
-	efi_status_t ret;
-
 	u64 pages = (len + EFI_PAGE_MASK) >> EFI_PAGE_SHIFT;
-	ret = efi_add_memory_map(*(uintptr_t *)mmio_ptr, pages, EFI_MMAP_IO,
-				 false);
-	if (ret != EFI_SUCCESS)
-		return ret;
+	uint64_t addr = *(uintptr_t *)mmio_ptr;
+	uint64_t retaddr;
+
+	retaddr = efi_add_memory_map(addr, pages, EFI_MMAP_IO, false);
+	if (retaddr != addr)
+		return EFI_OUT_OF_RESOURCES;
 
 	newmmio = calloc(1, sizeof(*newmmio));
 	if (!newmmio)
@@ -365,7 +365,7 @@  efi_status_t efi_add_runtime_mmio(void *mmio_ptr, u64 len)
 	newmmio->len = len;
 	list_add_tail(&newmmio->link, &efi_runtime_mmio);
 
-	return ret;
+	return EFI_SUCCESS;
 }
 
 /*