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

Message ID 20231030072757.3236546-1-harshit.m.mogalapalli@oracle.com
State New
Headers
Series [next] PCI: xilinx-xdma: Fix error code in xilinx_pl_dma_pcie_init_irq_domain() |

Commit Message

Harshit Mogalapalli Oct. 30, 2023, 7:27 a.m. UTC
  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@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(-)
  

Comments

Krzysztof Wilczyński Jan. 6, 2024, 11:39 a.m. UTC | #1
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@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
  
Krzysztof Wilczyński Jan. 8, 2024, 6:27 p.m. UTC | #2
Hello,

> Return -ENOMEM instead of zero(success) when it fails to get IRQ domain.

Applied to controller/xilinx, thank you!

[1/1] PCI: xilinx-xdma: Fix error code in xilinx_pl_dma_pcie_init_irq_domain()
      https://git.kernel.org/pci/pci/c/2324be17b5e0

	Krzysztof
  

Patch

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;
 	}
 
 	irq_domain_update_bus_token(port->intx_domain, DOMAIN_BUS_WIRED);