diff --git a/sys/dev/nve/if_nve.c b/sys/dev/nve/if_nve.c index 0d8267a9b154..6ffecbd01d79 100644 --- a/sys/dev/nve/if_nve.c +++ b/sys/dev/nve/if_nve.c @@ -559,12 +559,10 @@ nve_detach(device_t dev) if (device_is_attached(dev)) { nve_stop(sc); + /* XXX shouldn't hold lock over call to ether_ifdetch */ ether_ifdetach(ifp); } - if (ifp) - if_free(ifp); - if (sc->miibus) device_delete_child(dev, sc->miibus); bus_generic_detach(dev); @@ -601,6 +599,8 @@ nve_detach(device_t dev) bus_dma_tag_destroy(sc->rtag); NVE_UNLOCK(sc); + if (ifp) + if_free(ifp); mtx_destroy(&sc->mtx); mtx_destroy(&sc->osmtx);