diff options
author | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2021-11-20 13:56:02 +0100 |
---|---|---|
committer | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2021-11-26 21:30:59 +0100 |
commit | cd9a26bfe56344822c75edbc771526099efe63e6 (patch) | |
tree | 91a10fc83f6832c0eea7457ffc645b35dcd55973 /lib | |
parent | 3f73e79de83ecc78b9a9c823b8118ab1fba63b0a (diff) | |
download | u-boot-cd9a26bfe56344822c75edbc771526099efe63e6.zip u-boot-cd9a26bfe56344822c75edbc771526099efe63e6.tar.gz u-boot-cd9a26bfe56344822c75edbc771526099efe63e6.tar.bz2 |
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.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c index ef8b5c8..45127d1 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++; |