From: Christoph Hellwig Date: Wed, 1 Feb 2017 13:41:42 +0000 (+0100) Subject: PCI/MSI: Check that we have a legacy interrupt line before using it X-Git-Tag: v4.11-rc1~92^2~21^2~4 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=862290f9e23c39051e59bf12ce65707a8ec8b911;p=linux.git PCI/MSI: Check that we have a legacy interrupt line before using it It seems like there are some devices (e.g. the PCIe root port driver) that may not always have a INTx interrupt. Check for dev->irq before returning a legacy interrupt in pci_irq_alloc_vectors to properly handle this case. Signed-off-by: Christoph Hellwig Signed-off-by: Bjorn Helgaas --- diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index b44ad7c21b29..52ac675f0bd7 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -1198,9 +1198,11 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, } /* use legacy irq if allowed */ - if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1) { - pci_intx(dev, 1); - return 1; + if (flags & PCI_IRQ_LEGACY) { + if (min_vecs == 1 && dev->irq) { + pci_intx(dev, 1); + return 1; + } } return vecs;