diff options
Diffstat (limited to 'drivers/nvme/host/pci.c')
-rw-r--r-- | drivers/nvme/host/pci.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index fed803232edc..4c2ff2bb26bc 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c | |||
@@ -1506,6 +1506,11 @@ static inline void nvme_release_cmb(struct nvme_dev *dev) | |||
1506 | if (dev->cmb) { | 1506 | if (dev->cmb) { |
1507 | iounmap(dev->cmb); | 1507 | iounmap(dev->cmb); |
1508 | dev->cmb = NULL; | 1508 | dev->cmb = NULL; |
1509 | if (dev->cmbsz) { | ||
1510 | sysfs_remove_file_from_group(&dev->ctrl.device->kobj, | ||
1511 | &dev_attr_cmb.attr, NULL); | ||
1512 | dev->cmbsz = 0; | ||
1513 | } | ||
1509 | } | 1514 | } |
1510 | } | 1515 | } |
1511 | 1516 | ||
@@ -1779,6 +1784,7 @@ static void nvme_pci_disable(struct nvme_dev *dev) | |||
1779 | { | 1784 | { |
1780 | struct pci_dev *pdev = to_pci_dev(dev->dev); | 1785 | struct pci_dev *pdev = to_pci_dev(dev->dev); |
1781 | 1786 | ||
1787 | nvme_release_cmb(dev); | ||
1782 | pci_free_irq_vectors(pdev); | 1788 | pci_free_irq_vectors(pdev); |
1783 | 1789 | ||
1784 | if (pci_is_enabled(pdev)) { | 1790 | if (pci_is_enabled(pdev)) { |
@@ -2184,7 +2190,6 @@ static void nvme_remove(struct pci_dev *pdev) | |||
2184 | nvme_dev_disable(dev, true); | 2190 | nvme_dev_disable(dev, true); |
2185 | nvme_dev_remove_admin(dev); | 2191 | nvme_dev_remove_admin(dev); |
2186 | nvme_free_queues(dev, 0); | 2192 | nvme_free_queues(dev, 0); |
2187 | nvme_release_cmb(dev); | ||
2188 | nvme_release_prp_pools(dev); | 2193 | nvme_release_prp_pools(dev); |
2189 | nvme_dev_unmap(dev); | 2194 | nvme_dev_unmap(dev); |
2190 | nvme_put_ctrl(&dev->ctrl); | 2195 | nvme_put_ctrl(&dev->ctrl); |