return;
        }
 
-       BUG_ON(irq_has_action(dev->first_msi_irq));
-
        default_irq = entry->msi_attrib.default_irq;
        msi_free_irq(dev, dev->first_msi_irq);
 
        int head, entry_nr, type;
        void __iomem *base;
 
+       BUG_ON(irq_has_action(irq));
+
        entry = get_irq_msi(irq);
        if (!entry || entry->dev != dev) {
                return -EINVAL;
        while (head != tail) {
                tail = get_irq_msi(irq)->link.tail;
 
-               BUG_ON(irq_has_action(irq));
-
                if (irq != head)
                        msi_free_irq(dev, irq);
                irq = tail;
        if (!pci_msi_enable || !dev)
                return;
 
-       if (dev->msi_enabled) {
-               BUG_ON(irq_has_action(dev->first_msi_irq));
+       if (dev->msi_enabled)
                msi_free_irq(dev, dev->first_msi_irq);
-       }
 
        if (dev->msix_enabled)
                msix_free_all_irqs(dev);