efi_loader: don't use HandleProtocol
HandleProtocol() is deprecrated. According to the UEFI specification it should be implemented as a call to OpenProtocolInterface() with a hard coded agent handle. This implies that we would have to call CloseProtocolInterfaces() after usage with the same handle. Getting rid of an EFI_CALL() is also appreciated. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
23aa0502a4
commit
15436faa46
|
|
@ -1949,6 +1949,7 @@ efi_status_t efi_load_image_from_path(bool boot_policy,
|
||||||
efi_uintn_t buffer_size;
|
efi_uintn_t buffer_size;
|
||||||
uint64_t addr, pages;
|
uint64_t addr, pages;
|
||||||
const efi_guid_t *guid;
|
const efi_guid_t *guid;
|
||||||
|
struct efi_handler *handler;
|
||||||
|
|
||||||
/* In case of failure nothing is returned */
|
/* In case of failure nothing is returned */
|
||||||
*buffer = NULL;
|
*buffer = NULL;
|
||||||
|
|
@ -1970,11 +1971,11 @@ efi_status_t efi_load_image_from_path(bool boot_policy,
|
||||||
}
|
}
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
return EFI_NOT_FOUND;
|
return EFI_NOT_FOUND;
|
||||||
ret = EFI_CALL(efi_handle_protocol(device, guid,
|
ret = efi_search_protocol(device, guid, &handler);
|
||||||
(void **)&load_file_protocol));
|
|
||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
return EFI_NOT_FOUND;
|
return EFI_NOT_FOUND;
|
||||||
buffer_size = 0;
|
buffer_size = 0;
|
||||||
|
load_file_protocol = handler->protocol_interface;
|
||||||
ret = EFI_CALL(load_file_protocol->load_file(
|
ret = EFI_CALL(load_file_protocol->load_file(
|
||||||
load_file_protocol, rem, boot_policy,
|
load_file_protocol, rem, boot_policy,
|
||||||
&buffer_size, NULL));
|
&buffer_size, NULL));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue