summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_snp.c
diff options
context:
space:
mode:
authorMichael Brown2015-09-01 22:22:39 +0200
committerMichael Brown2015-09-01 22:24:02 +0200
commit226d5f2cafc258b979c090b19503eafa77c9a1a2 (patch)
tree30c7ed00ad67b424f6a73fb656ffa7b98aa6695b /src/interface/efi/efi_snp.c
parent[efi] Allow calls to efi_snp_claim() and efi_snp_release() to be nested (diff)
downloadipxe-226d5f2cafc258b979c090b19503eafa77c9a1a2.tar.gz
ipxe-226d5f2cafc258b979c090b19503eafa77c9a1a2.tar.xz
ipxe-226d5f2cafc258b979c090b19503eafa77c9a1a2.zip
[efi] Fix order of events on SNP removal path
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/efi/efi_snp.c')
-rw-r--r--src/interface/efi/efi_snp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/interface/efi/efi_snp.c b/src/interface/efi/efi_snp.c
index b7debe7b..67123849 100644
--- a/src/interface/efi/efi_snp.c
+++ b/src/interface/efi/efi_snp.c
@@ -1101,6 +1101,7 @@ static int efi_snp_probe ( struct net_device *netdev ) {
snpdev, netdev->name, efi_handle_name ( snpdev->handle ) );
return 0;
+ list_del ( &snpdev->list );
if ( snpdev->package_list )
efi_snp_hii_uninstall ( snpdev );
efi_child_del ( efidev->device, snpdev->handle );
@@ -1172,10 +1173,10 @@ static void efi_snp_remove ( struct net_device *netdev ) {
}
/* Uninstall the SNP */
+ list_del ( &snpdev->list );
if ( snpdev->package_list )
efi_snp_hii_uninstall ( snpdev );
efi_child_del ( snpdev->efidev->device, snpdev->handle );
- list_del ( &snpdev->list );
bs->UninstallMultipleProtocolInterfaces (
snpdev->handle,
&efi_simple_network_protocol_guid, &snpdev->snp,