[PATCH next] PCI: xilinx-xdma: Fix error code in xilinx_pl_dma_pcie_init_irq_domain()

Krzysztof Wilczyński kw at linux.com
Sat Jan 6 03:39:23 PST 2024


Hello,

> Return -ENOMEM instead of zero(success) when it fails to get IRQ domain.
> 
> Fixes: 8d786149d78c ("PCI: xilinx-xdma: Add Xilinx XDMA Root Port driver")
> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli at oracle.com>
> ---
> This is found with smatch and the patch is only compile tested.
> ---
>  drivers/pci/controller/pcie-xilinx-dma-pl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/controller/pcie-xilinx-dma-pl.c b/drivers/pci/controller/pcie-xilinx-dma-pl.c
> index 2f7d676c683c..52f3211d11cd 100644
> --- a/drivers/pci/controller/pcie-xilinx-dma-pl.c
> +++ b/drivers/pci/controller/pcie-xilinx-dma-pl.c
> @@ -576,7 +576,7 @@ static int xilinx_pl_dma_pcie_init_irq_domain(struct pl_dma_pcie *port)
>  						  &intx_domain_ops, port);
>  	if (!port->intx_domain) {
>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
> -		return PTR_ERR(port->intx_domain);
> +		return -ENOMEM;
>  	}

This looks good.

However, there is probably another issue here on the failure path.  I don't
see any of_node_put() to release the pcie_intc_node taken at the top of the
xilinx_pl_dma_pcie_init_irq_domain() function.

I would imagine a similar approach to the error handling as what we can see
from xilinx_cpm_pcie_init_irq_domain() function in the older driver.

Thippeswamy, can you have a look and see if this can be improved?  I would
love to get a fix before Bjorn sends a Pull Request for the next release.

	Krzysztof



More information about the linux-arm-kernel mailing list