PCI/MSI: Consolidate error handling in msi_capability_init()
authorThomas Gleixner <tglx@linutronix.de>
Thu, 29 Jul 2021 21:51:54 +0000 (23:51 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 10 Aug 2021 09:03:29 +0000 (11:03 +0200)
Three error exits doing exactly the same ask for a common error exit point.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210729222543.098828720@linutronix.de
drivers/pci/msi.c

index 175f4d6..d2821bb 100644 (file)
@@ -659,25 +659,16 @@ static int msi_capability_init(struct pci_dev *dev, int nvec,
 
        /* Configure MSI capability structure */
        ret = pci_msi_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSI);
-       if (ret) {
-               msi_mask_irq(entry, mask, 0);
-               free_msi_irqs(dev);
-               return ret;
-       }
+       if (ret)
+               goto err;
 
        ret = msi_verify_entries(dev);
-       if (ret) {
-               msi_mask_irq(entry, mask, 0);
-               free_msi_irqs(dev);
-               return ret;
-       }
+       if (ret)
+               goto err;
 
        ret = populate_msi_sysfs(dev);
-       if (ret) {
-               msi_mask_irq(entry, mask, 0);
-               free_msi_irqs(dev);
-               return ret;
-       }
+       if (ret)
+               goto err;
 
        /* Set MSI enabled bits */
        pci_intx_for_msi(dev, 0);
@@ -687,6 +678,11 @@ static int msi_capability_init(struct pci_dev *dev, int nvec,
        pcibios_free_irq(dev);
        dev->irq = entry->irq;
        return 0;
+
+err:
+       msi_mask_irq(entry, mask, 0);
+       free_msi_irqs(dev);
+       return ret;
 }
 
 static void __iomem *msix_map_region(struct pci_dev *dev, unsigned nr_entries)