]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Fix error handling path in efi_snp_probe
authorIgnat Korchagin <ignat@cloudflare.com>
Fri, 4 Jan 2019 19:20:28 +0000 (19:20 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 15 Jan 2019 14:01:17 +0000 (14:01 +0000)
Current (simplified):

1. InstallMultipleProtocolInterfaces
       if err goto err_install_protocol_interface;
2. OpenProtocol(efi_nii_protocol_guid)
       if err goto err_open_nii;
3. OpenProtocol(efi_nii31_protocol_guid)
       if err goto err_open_nii31;
4. efi_child_add
       if err goto err_efi_child_add;
...
err_efi_child_add:
   CloseProtocol(efi_nii_protocol_guid) <= should be efi_nii31_protocol_guid
err_open_nii: <= should be err_open_nii31
   CloseProtocol(efi_nii31_protocol_guid) <= should be efi_nii_protocol_guid
err_open_nii31: <= should be err_open_nii
   UninstallMultipleProtocolInterfaces

Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/interface/efi/efi_snp.c

index 9c1b14d87970f0fe84cbf4105ea6afaa933264b7..d648700f68e935a8e7ecf12b70fe0a1ec90eb8fb 100644 (file)
@@ -1829,12 +1829,12 @@ static int efi_snp_probe ( struct net_device *netdev ) {
                efi_snp_hii_uninstall ( snpdev );
        efi_child_del ( efidev->device, snpdev->handle );
  err_efi_child_add:
-       bs->CloseProtocol ( snpdev->handle, &efi_nii_protocol_guid,
-                           efi_image_handle, snpdev->handle );
- err_open_nii:
        bs->CloseProtocol ( snpdev->handle, &efi_nii31_protocol_guid,
                            efi_image_handle, snpdev->handle );
  err_open_nii31:
+       bs->CloseProtocol ( snpdev->handle, &efi_nii_protocol_guid,
+                           efi_image_handle, snpdev->handle );
+ err_open_nii:
        bs->UninstallMultipleProtocolInterfaces (
                        snpdev->handle,
                        &efi_simple_network_protocol_guid, &snpdev->snp,