PCI/MSI and PCI/MSI-X are mutually exclusive, but the MSI-X enable code
lacks a check for already enabled MSI.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
---
 drivers/pci/msi/msi.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -935,6 +935,11 @@ static int __pci_enable_msix_range(struc
        if (maxvec < minvec)
                return -ERANGE;
 
+       if (dev->msi_enabled) {
+               pci_info(dev, "can't enable MSI-X (MSI already enabled)\n");
+               return -EINVAL;
+       }
+
        if (WARN_ON_ONCE(dev->msix_enabled))
                return -EINVAL;
 

Reply via email to