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>
This commit is contained in:
@@ -424,7 +424,7 @@ static efi_status_t efi_disk_add_dev(
|
|||||||
&efi_block_io_guid, &diskobj->ops,
|
&efi_block_io_guid, &diskobj->ops,
|
||||||
guid, NULL, NULL));
|
guid, NULL, NULL));
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
return ret;
|
goto error;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On partitions or whole disks without partitions install the
|
* On partitions or whole disks without partitions install the
|
||||||
@@ -573,7 +573,7 @@ efi_status_t efi_disk_register(void)
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
log_err("ERROR: failure to add disk device %s, r = %lu\n",
|
log_err("ERROR: failure to add disk device %s, r = %lu\n",
|
||||||
dev->name, ret & ~EFI_ERROR_MASK);
|
dev->name, ret & ~EFI_ERROR_MASK);
|
||||||
return ret;
|
continue;
|
||||||
}
|
}
|
||||||
disks++;
|
disks++;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user