diff mbox series

[v2,1/1] efi_loader: efi_disk_register() should not fail

Message ID 20211120131209.73748-1-heinrich.schuchardt@canonical.com
State Accepted, archived
Commit cd9a26bfe56344822c75edbc771526099efe63e6
Delegated to: Heinrich Schuchardt
Headers show
Series [v2,1/1] efi_loader: efi_disk_register() should not fail | expand

Commit Message

Heinrich Schuchardt Nov. 20, 2021, 1:12 p.m. UTC
Our algorithm for creating USB device paths may lead to duplicate device
paths which result in efi_disk_register() failing. Instead we should just
skip devices that cannot be registered as EFI block devices.

Fix a memory leak in efi_disk_add_dev() caused by the duplicate device
path.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
v2:
	%s/return/goto/
---
 lib/efi_loader/efi_disk.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index ef8b5c88ff..45127d1768 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -424,7 +424,7 @@  static efi_status_t efi_disk_add_dev(
 			&efi_block_io_guid, &diskobj->ops,
 			guid, NULL, NULL));
 	if (ret != EFI_SUCCESS)
-		return ret;
+		goto error;
 
 	/*
 	 * On partitions or whole disks without partitions install the
@@ -573,7 +573,7 @@  efi_status_t efi_disk_register(void)
 		if (ret) {
 			log_err("ERROR: failure to add disk device %s, r = %lu\n",
 				dev->name, ret & ~EFI_ERROR_MASK);
-			return ret;
+			continue;
 		}
 		disks++;