Index: sys/dev/e1000/if_em.c =================================================================== --- sys/dev/e1000/if_em.c (revision 315684) +++ sys/dev/e1000/if_em.c (working copy) @@ -556,7 +556,7 @@ if (em_allocate_pci_resources(adapter)) { device_printf(dev, "Allocation of PCI resources failed\n"); error = ENXIO; - goto err_pci; + goto err_lock; } /* @@ -817,9 +817,11 @@ em_release_hw_control(adapter); if (adapter->ifp != (void *)NULL) if_free(adapter->ifp); + if (adapter->mta != NULL) + free(adapter->mta, M_DEVBUF); err_pci: em_free_pci_resources(adapter); - free(adapter->mta, M_DEVBUF); +err_lock: EM_CORE_LOCK_DESTROY(adapter); return (error); Index: sys/dev/e1000/if_igb.c =================================================================== --- sys/dev/e1000/if_igb.c (revision 315684) +++ sys/dev/e1000/if_igb.c (working copy) @@ -447,7 +447,7 @@ if (igb_allocate_pci_resources(adapter)) { device_printf(dev, "Allocation of PCI resources failed\n"); error = ENXIO; - goto err_pci; + goto err_lock; } /* Do Shared Code initialization */ @@ -664,11 +664,13 @@ igb_free_transmit_structures(adapter); igb_free_receive_structures(adapter); igb_release_hw_control(adapter); + if(adapter->mta != NULL) + free(adapter->mta, M_DEVBUF); err_pci: igb_free_pci_resources(adapter); if (adapter->ifp != NULL) if_free(adapter->ifp); - free(adapter->mta, M_DEVBUF); +err_lock: IGB_CORE_LOCK_DESTROY(adapter); return (error); @@ -5327,7 +5329,6 @@ if (adapter->vf_ifp) { e1000_rlpml_set_vf(hw, adapter->max_frame_size + VLAN_TAG_SIZE); - return; } reg = E1000_READ_REG(hw, E1000_CTRL);