]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Get veto candidate driver name from image handle
authorMichael Brown <mcb30@ipxe.org>
Thu, 20 Mar 2025 14:35:11 +0000 (14:35 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 20 Mar 2025 14:39:52 +0000 (14:39 +0000)
Allow for drivers that do not install the driver binding protocol on
the image handle by opening the component name protocol on the driver
binding's ImageHandle rather than on the driver handle itself.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/interface/efi/efi_veto.c

index 1b23320418e1a72a5a5678b068bc7ed61bd671ee..4cf4e846d41ec192903bacef99f81e42b7229e07 100644 (file)
@@ -598,10 +598,10 @@ static int efi_veto_find ( EFI_HANDLE driver, const char *manufacturer,
                goto err_loaded;
        }
 
-       /* Open component name protocol, if present*/
+       /* Open component name protocol, if present */
        if ( ( efirc = bs->OpenProtocol (
-                       driver, &efi_component_name_protocol_guid,
-                       &wtf.interface, efi_image_handle, driver,
+                       image, &efi_component_name_protocol_guid,
+                       &wtf.interface, efi_image_handle, image,
                        EFI_OPEN_PROTOCOL_GET_PROTOCOL ) ) != 0 ) {
                /* Ignore failure; is not required to be present */
                wtf.interface = NULL;
@@ -641,8 +641,8 @@ static int efi_veto_find ( EFI_HANDLE driver, const char *manufacturer,
 
        /* Close protocols */
        if ( wtf.wtf ) {
-               bs->CloseProtocol ( driver, &efi_component_name_protocol_guid,
-                                   efi_image_handle, driver );
+               bs->CloseProtocol ( image, &efi_component_name_protocol_guid,
+                                   efi_image_handle, image );
        }
        bs->CloseProtocol ( image, &efi_loaded_image_protocol_guid,
                            efi_image_handle, image );