2022-11-14 07:21:38

by Jinjie Ruan

[permalink] [raw]
Subject: [PATCH] xen: add missing free_irq() in error path

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

Signed-off-by: ruanjinjie <[email protected]>
---
drivers/xen/platform-pci.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
index 18f0ed8b1f93..6ebd819338ec 100644
--- a/drivers/xen/platform-pci.c
+++ b/drivers/xen/platform-pci.c
@@ -144,7 +144,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;
}
}

@@ -152,13 +152,16 @@ 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;
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:
--
2.25.1



2022-11-14 11:09:08

by Oleksandr Tyshchenko

[permalink] [raw]
Subject: Re: [PATCH] xen: add missing free_irq() in error path


On 14.11.22 09:07, ruanjinjie wrote:

Hello


> free_irq() is missing in case of error, fix that.
>
> Signed-off-by: ruanjinjie <[email protected]>


Nit: neither subject nor description mentions which subsystem current
patch targets.

I would add "xen-platform:" or "xen/platform-pci:" at least.


Reviewed-by: Oleksandr Tyshchenko <[email protected]>

Thanks.

> ---
> drivers/xen/platform-pci.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
> index 18f0ed8b1f93..6ebd819338ec 100644
> --- a/drivers/xen/platform-pci.c
> +++ b/drivers/xen/platform-pci.c
> @@ -144,7 +144,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;
> }
> }
>
> @@ -152,13 +152,16 @@ 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;
> 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:

--
Regards,

Oleksandr Tyshchenko

2022-11-14 11:20:36

by Jinjie Ruan

[permalink] [raw]
Subject: Re: [PATCH] xen: add missing free_irq() in error path



On 2022/11/14 18:45, Oleksandr Tyshchenko wrote:
>
> On 14.11.22 09:07, ruanjinjie wrote:
>
> Hello
>
>
>> free_irq() is missing in case of error, fix that.
>>
>> Signed-off-by: ruanjinjie <[email protected]>
>
>
> Nit: neither subject nor description mentions which subsystem current
> patch targets.
>
> I would add "xen-platform:" or "xen/platform-pci:" at least.
>
Thank you very much!
>
> Reviewed-by: Oleksandr Tyshchenko <[email protected]>
>
> Thanks.
>
>> ---
>> drivers/xen/platform-pci.c | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c
>> index 18f0ed8b1f93..6ebd819338ec 100644
>> --- a/drivers/xen/platform-pci.c
>> +++ b/drivers/xen/platform-pci.c
>> @@ -144,7 +144,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;
>> }
>> }
>>
>> @@ -152,13 +152,16 @@ 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;
>> 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:
>