Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be7837e8 authored by Jens Axboe's avatar Jens Axboe
Browse files

NVMe: fail pci initialization if the device doesn't have any BARs



The PCI init of NVMe doesn't check for valid bars before proceeding
to map and use BAR 0. If the device is hosed (or firmware is), then
we should catch this case and give up early.

This fixes a:

[ 1662.035778] WARNING: CPU: 0 PID: 4 at arch/x86/mm/ioremap.c:63 __ioremap_check_ram+0xa7/0xc0()

and later badness on such a device.

Acked-by: default avatarKeith Busch <keith.busch@intel.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 2c30540b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2156,6 +2156,9 @@ static int nvme_dev_map(struct nvme_dev *dev)
	dev->entry[0].vector = pdev->irq;
	pci_set_master(pdev);
	bars = pci_select_bars(pdev, IORESOURCE_MEM);
	if (!bars)
		goto disable_pci;

	if (pci_request_selected_regions(pdev, bars, "nvme"))
		goto disable_pci;