]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xen/platform-pci: add missing free_irq() in error path
authorruanjinjie <ruanjinjie@huawei.com>
Mon, 14 Nov 2022 11:21:24 +0000 (19:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Dec 2022 10:15:40 +0000 (11:15 +0100)
[ Upstream commit c53717e1e3f0d0f9129b2e0dbc6dcc5e0a8132e9 ]

free_irq() is missing in case of error in platform_pci_probe(), fix that.

Signed-off-by: ruanjinjie <ruanjinjie@huawei.com>
Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Link: https://lore.kernel.org/r/20221114112124.1965611-1-ruanjinjie@huawei.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/xen/platform-pci.c

index cf9666680c8c0e57225047939d169228724a7ab6..20365b01c36b9a8c9f7a64f6a21ccdba79d22d5a 100644 (file)
@@ -149,7 +149,7 @@ static int platform_pci_probe(struct pci_dev *pdev,
                if (ret) {
                        dev_warn(&pdev->dev, "Unable to set the evtchn callback "
                                         "err=%d\n", ret);
-                       goto out;
+                       goto irq_out;
                }
        }
 
@@ -157,7 +157,7 @@ static int platform_pci_probe(struct pci_dev *pdev,
        grant_frames = alloc_xen_mmio(PAGE_SIZE * max_nr_gframes);
        ret = gnttab_setup_auto_xlat_frames(grant_frames);
        if (ret)
-               goto out;
+               goto irq_out;
        ret = gnttab_init();
        if (ret)
                goto grant_out;
@@ -165,6 +165,9 @@ static int platform_pci_probe(struct pci_dev *pdev,
        return 0;
 grant_out:
        gnttab_free_auto_xlat_frames();
+irq_out:
+       if (!xen_have_vector_callback)
+               free_irq(pdev->irq, pdev);
 out:
        pci_release_region(pdev, 0);
 mem_out: