efi_loader: fix TEST_PROTOCOL case in OpenProtocol()
PATCH 1/1 efi_loader: fix TEST_PROTOCOL case in OpenProtocol()
In the TEST_PROTOCOL case, protocol_interface might be NULL, and at any rate should not be touched. So skip efi_protocol_open() in this case.
--- lib/efi_loader/efi_boottime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
lib/efi_loader/efi_boottime.c +1 -1
@@ -1723,7 +1723,7 @@ efi_status_t EFIAPI efi_open_protocol( } r =efi_search_protocol (handle, protocol, &handler); -if (r !=EFI_SUCCESS ) +if (r !=EFI_SUCCESS || attributes ==EFI_OPEN_PROTOCOL_TEST_PROTOCOL ) goto out; r = efi_protocol_open(handler, protocol_interface, agent_handle,
Signature · 1 line
2.13.5
PATCH 1/1 efi_loader: fix TEST_PROTOCOL case in OpenProtocol()
Quoted 15 lines · Rob Clark
In the
TEST_PROTOCOLcase,protocol_interfacemight be NULL, and at any rate should not be touched. So skipefi_protocol_open()in this case.Fixes "efi_loader: open_info in OpenProtocol"Signed-off-by Rob Clark <[email protected]>--- lib/efi_loader/efi_boottime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)lib/efi_loader/efi_boottime.c +0
-0
lib/efi_loader/efi_boottime.c efi_status_t EFIAPI efi_open_protocol( · line 1729
Quoted 8 lines
lib/efi_loader/efi_boottime.c +1
-1@@ -1723,7 +1723,7 @@ efi_status_t EFIAPI efi_open_protocol( } r =efi_search_protocol (handle, protocol, &handler); -if (r !=EFI_SUCCESS ) +if (r !=EFI_SUCCESS || attributes ==EFI_OPEN_PROTOCOL_TEST_PROTOCOL ) goto out; r = efi_protocol_open(handler, protocol_interface, agent_handle,
Thank you for pointing to a problem in my patch
efi_loader: open_info in OpenProtocol
https://patchwork.ozlabs.org/patch/806178/
Your patch makes OpenProtocol conform with this requirement cited from the UEFI spec:
"TEST_PROTOCOL - Used by a driver to test for the existence of a protocol interface on a handle. Interface is optional for this attribute value, so it is ignored, and the caller should only use the return status code. The caller is also not required to close the protocol interface with CloseProtocol()".
The last sentence implies that we should not update the OpenProtocolInformation for TEST_PROTOCOL. We should put this into a test.
There are anyway other review comments I have to consider when resubmitting my patch series for the protocol services. So I would prefer to just integrate this correction into my patch instead of adding a separate one.
Best regards
Heinrich
PATCH 1/1 efi_loader: fix TEST_PROTOCOL case in OpenProtocol()
Quoted 39 lines · Heinrich Schuchardt
Quoted 15 lines · Rob Clark
In the
TEST_PROTOCOLcase,protocol_interfacemight be NULL, and at any rate should not be touched. So skipefi_protocol_open()in this case.Fixes "efi_loader: open_info in OpenProtocol"Signed-off-by Rob Clark <[email protected]>--- lib/efi_loader/efi_boottime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)lib/efi_loader/efi_boottime.c +0
-0lib/efi_loader/efi_boottime.c efi_status_t EFIAPI efi_open_protocol( · line 1729
Quoted 8 lines
lib/efi_loader/efi_boottime.c +1
-1@@ -1723,7 +1723,7 @@ efi_status_t EFIAPI efi_open_protocol( } r =efi_search_protocol (handle, protocol, &handler); -if (r !=EFI_SUCCESS ) +if (r !=EFI_SUCCESS || attributes ==EFI_OPEN_PROTOCOL_TEST_PROTOCOL ) goto out; r = efi_protocol_open(handler, protocol_interface, agent_handle,Thank you for pointing to a problem in my patch
efi_loader:open_infoin OpenProtocol
https://patchwork.ozlabs.org/patch/806178/Your patch makes OpenProtocol conform with this requirement cited from the UEFI spec:
"
TEST_PROTOCOL- Used by a driver to test for the existence of a protocol interface on a handle. Interface is optional for this attribute value, so it is ignored, and the caller should only use the return status code. The caller is also not required to close the protocol interface withCloseProtocol()".
Quoted 7 lines
The last sentence implies that we should not update the OpenProtocolInformation for
TEST_PROTOCOL. We should put this into a test.There are anyway other review comments I have to consider when resubmitting my patch series for the protocol services. So I would prefer to just integrate this correction into my patch instead of adding a separate one.
Sure, it's fine by me if you just want to squash this into your patch
BR,
-R