Skip to content

Commit

Permalink
NVMe: Only release requested regions
Browse files Browse the repository at this point in the history
The NVMe driver only requests the PCIe device's memory regions but releases
all possible regions (including eventual I/O regions). This leads to a stale
warning entry in dmesg about freeing non existent resources.

Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
  • Loading branch information
Johannes Thumshirn authored and Jens Axboe committed Jun 9, 2016
1 parent 1decabc commit edb50a5
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/nvme/host/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -1679,9 +1679,14 @@ static int nvme_pci_enable(struct nvme_dev *dev)

static void nvme_dev_unmap(struct nvme_dev *dev)
{
struct pci_dev *pdev = to_pci_dev(dev->dev);
int bars;

if (dev->bar)
iounmap(dev->bar);
pci_release_regions(to_pci_dev(dev->dev));

bars = pci_select_bars(pdev, IORESOURCE_MEM);
pci_release_selected_regions(pdev, bars);
}

static void nvme_pci_disable(struct nvme_dev *dev)
Expand Down Expand Up @@ -1924,7 +1929,7 @@ static int nvme_dev_map(struct nvme_dev *dev)

return 0;
release:
pci_release_regions(pdev);
pci_release_selected_regions(pdev, bars);
return -ENODEV;
}

Expand Down

0 comments on commit edb50a5

Please sign in to comment.