diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index d03db819f8ee..2f00469480d6 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -3893,6 +3893,8 @@ ena_detach(device_t pdev) return (EBUSY); } + ether_ifdetach(adapter->ifp); + /* Free reset task and callout */ callout_drain(&adapter->timer_service); while (taskqueue_cancel(adapter->reset_tq, &adapter->reset_task, NULL)) @@ -3903,11 +3905,6 @@ ena_detach(device_t pdev) ena_down(adapter); sx_unlock(&adapter->ioctl_sx); - if (adapter->ifp != NULL) { - ether_ifdetach(adapter->ifp); - if_free(adapter->ifp); - } - ena_free_all_io_rings_resources(adapter); ena_free_counters((counter_u64_t *)&adapter->hw_stats, @@ -3949,6 +3946,8 @@ ena_detach(device_t pdev) mtx_destroy(&adapter->global_mtx); sx_destroy(&adapter->ioctl_sx); + if_free(adapter->ifp); + if (ena_dev->bus != NULL) free(ena_dev->bus, M_DEVBUF);