]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI: mediatek-gen3: Prevent leaking IRQ domains when IRQ not found
authorChen-Yu Tsai <wenst@chromium.org>
Tue, 24 Mar 2026 09:35:41 +0000 (17:35 +0800)
committerManivannan Sadhasivam <mani@kernel.org>
Sat, 4 Apr 2026 16:50:50 +0000 (22:20 +0530)
In mtk_pcie_setup_irq(), the IRQ domains are allocated before the
controller's IRQ is fetched. If the latter fails, the function
directly returns an error, without cleaning up the allocated domains.

Hence, reverse the order so that the IRQ domains are allocated after the
controller's IRQ is found.

This was flagged by Sashiko during a review of "[PATCH v6 0/7] PCI:
mediatek-gen3: add power control support".

Fixes: 814cceebba9b ("PCI: mediatek-gen3: Add INTx support")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Link: https://sashiko.dev/#/patchset/20260324052002.4072430-1-wenst%40chromium.org
Link: https://patch.msgid.link/20260324093542.18523-1-wenst@chromium.org
drivers/pci/controller/pcie-mediatek-gen3.c

index a94fdbaf47fe9ff15913c9b266043da50d446668..2f9365930d6a9a8cfd2729a422fcdba3243dae74 100644 (file)
@@ -890,14 +890,14 @@ static int mtk_pcie_setup_irq(struct mtk_gen3_pcie *pcie)
        struct platform_device *pdev = to_platform_device(dev);
        int err;
 
-       err = mtk_pcie_init_irq_domains(pcie);
-       if (err)
-               return err;
-
        pcie->irq = platform_get_irq(pdev, 0);
        if (pcie->irq < 0)
                return pcie->irq;
 
+       err = mtk_pcie_init_irq_domains(pcie);
+       if (err)
+               return err;
+
        irq_set_chained_handler_and_data(pcie->irq, mtk_pcie_irq_handler, pcie);
 
        return 0;