summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2021-11-20 15:56:02 +0300
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2021-11-26 23:30:59 +0300
commitcd9a26bfe56344822c75edbc771526099efe63e6 (patch)
tree91a10fc83f6832c0eea7457ffc645b35dcd55973 /lib
parent3f73e79de83ecc78b9a9c823b8118ab1fba63b0a (diff)
downloadu-boot-cd9a26bfe56344822c75edbc771526099efe63e6.tar.xz
efi_loader: efi_disk_register() should not fail
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/efi_disk.c4
1 files changed, 2 insertions, 2 deletions
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++;