msi_free_irq(dev, dev->first_msi_irq);
        }
        if (dev->msix_enabled) {
-               int irq, head, tail = 0, warning = 0;
+               int irq, head, tail = 0;
                void __iomem *base = NULL;
 
                irq = head = dev->first_msi_irq;
                while (head != tail) {
                        tail = get_irq_msi(irq)->link.tail;
                        base = get_irq_msi(irq)->mask_base;
-                       if (irq_has_action(irq))
-                               warning = 1;
-                       else if (irq != head) /* Release MSI-X irq */
+
+                       BUG_ON(irq_has_action(irq));
+
+                       if (irq != head) /* Release MSI-X irq */
                                msi_free_irq(dev, irq);
                        irq = tail;
                }
                msi_free_irq(dev, irq);
-               if (warning) {
-                       iounmap(base);
-                       printk(KERN_WARNING "PCI: %s: msi_remove_pci_irq_vectors() "
-                              "called without free_irq() on all MSI-X irqs\n",
-                              pci_name(dev));
-                       BUG_ON(warning > 0);
-               }
        }
 }