The IRQ domain allocated for the PCIe controller is not freed if
resource_list_first_type returns NULL, leading to a resource leak.
This fix ensures properly cleaning up the allocated IRQ domain in the error
path.
Signed-off-by: Thippeswamy Havalige <thippeswamy.havalige@amd.com>
---
drivers/pci/controller/pcie-xilinx-cpm.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/controller/pcie-xilinx-cpm.c b/drivers/pci/controller/pcie-xilinx-cpm.c
index 81e8bfae53d0..660b12fc4631 100644
--- a/drivers/pci/controller/pcie-xilinx-cpm.c
+++ b/drivers/pci/controller/pcie-xilinx-cpm.c
@@ -583,8 +583,10 @@ static int xilinx_cpm_pcie_probe(struct platform_device *pdev)
return err;
bus = resource_list_first_type(&bridge->windows, IORESOURCE_BUS);
- if (!bus)
+ if (!bus) {
+ xilinx_cpm_free_irq_domains(port);
return -ENODEV;
+ }
port->variant = of_device_get_match_data(dev);
--
2.43.0
On Mon, Feb 24, 2025 at 09:20:22PM +0530, Thippeswamy Havalige wrote:
> The IRQ domain allocated for the PCIe controller is not freed if
> resource_list_first_type returns NULL, leading to a resource leak.
>
> This fix ensures properly cleaning up the allocated IRQ domain in the error
> path.
>
Missing Fixes tag.
> Signed-off-by: Thippeswamy Havalige <thippeswamy.havalige@amd.com>
> ---
> drivers/pci/controller/pcie-xilinx-cpm.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pcie-xilinx-cpm.c b/drivers/pci/controller/pcie-xilinx-cpm.c
> index 81e8bfae53d0..660b12fc4631 100644
> --- a/drivers/pci/controller/pcie-xilinx-cpm.c
> +++ b/drivers/pci/controller/pcie-xilinx-cpm.c
> @@ -583,8 +583,10 @@ static int xilinx_cpm_pcie_probe(struct platform_device *pdev)
> return err;
>
> bus = resource_list_first_type(&bridge->windows, IORESOURCE_BUS);
> - if (!bus)
> + if (!bus) {
> + xilinx_cpm_free_irq_domains(port);
Why can't you use existing 'err_parse_dt' label? If the reason is the name, just
change it to actual error case. Like, 'err_free_irq_domains'.
- Mani
--
மணிவண்ணன் சதாசிவம்
Hello,
[...]
> > The IRQ domain allocated for the PCIe controller is not freed if
> > resource_list_first_type returns NULL, leading to a resource leak.
> >
> > This fix ensures properly cleaning up the allocated IRQ domain in the error
> > path.
> >
>
> Missing Fixes tag.
Done.
> > Signed-off-by: Thippeswamy Havalige <thippeswamy.havalige@amd.com>
> > ---
> > drivers/pci/controller/pcie-xilinx-cpm.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/pci/controller/pcie-xilinx-cpm.c b/drivers/pci/controller/pcie-xilinx-cpm.c
> > index 81e8bfae53d0..660b12fc4631 100644
> > --- a/drivers/pci/controller/pcie-xilinx-cpm.c
> > +++ b/drivers/pci/controller/pcie-xilinx-cpm.c
> > @@ -583,8 +583,10 @@ static int xilinx_cpm_pcie_probe(struct platform_device *pdev)
> > return err;
> >
> > bus = resource_list_first_type(&bridge->windows, IORESOURCE_BUS);
> > - if (!bus)
> > + if (!bus) {
> > + xilinx_cpm_free_irq_domains(port);
>
> Why can't you use existing 'err_parse_dt' label? If the reason is the name, just
> change it to actual error case. Like, 'err_free_irq_domains'.
Done.
I took care of the review feedback and added missing "Fixes:" tag, and
changed the code to use an existing goto label. Both changes are already
on the branch.
Thank you!
Krzysztof
© 2016 - 2025 Red Hat, Inc.