mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
efi_loader: correcty determine total device path length
Device paths may consist of multiple instances. Up to now we have only considered the size of the first instance. For the services of the EFI_DEVICE_PATH_UTILITIES_PROTOCOL in most cases the total length of the device path is relevant. So let's rename efi_dp_size() to efi_dp_instance_size() and create a new function efi_dp_size() that calculates the total device path length. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
adb575124d
commit
f6dd3f359c
3 changed files with 31 additions and 12 deletions
|
@ -2219,7 +2219,7 @@ static efi_status_t EFIAPI efi_locate_device_path(
|
|||
}
|
||||
|
||||
/* Find end of device path */
|
||||
len = efi_dp_size(*device_path);
|
||||
len = efi_dp_instance_size(*device_path);
|
||||
|
||||
/* Get all handles implementing the protocol */
|
||||
ret = EFI_CALL(efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL,
|
||||
|
@ -2234,7 +2234,7 @@ static efi_status_t EFIAPI efi_locate_device_path(
|
|||
if (ret != EFI_SUCCESS)
|
||||
continue;
|
||||
dp = (struct efi_device_path *)handler->protocol_interface;
|
||||
len_dp = efi_dp_size(dp);
|
||||
len_dp = efi_dp_instance_size(dp);
|
||||
/*
|
||||
* This handle can only be a better fit
|
||||
* if its device path length is longer than the best fit and
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue