From ec743e0c33f4f2889479caa06c565eabe8aec082 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Thu, 22 Aug 2019 20:09:32 +0000 Subject: [PATCH] Move releasing of resources to later Turn off bus master after we detach the device (to match the prior order). Release MSI after we're done detaching and have turned off all the interrupts. Otherwise this may cause problems as other threads race nvme_detach. This more closely matches the old order. Reviewed by: mav@ --- sys/dev/nvme/nvme_pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/nvme/nvme_pci.c b/sys/dev/nvme/nvme_pci.c index 358c840a1f9..8b87f6a8eda 100644 --- a/sys/dev/nvme/nvme_pci.c +++ b/sys/dev/nvme/nvme_pci.c @@ -215,11 +215,13 @@ static int nvme_pci_detach(device_t dev) { struct nvme_controller*ctrlr = DEVICE2SOFTC(dev); + int rv; + rv = nvme_detach(dev); if (ctrlr->msix_enabled) pci_release_msi(dev); pci_disable_busmaster(dev); - return (nvme_detach(dev)); + return (rv); } static int