Re: [PATCH v2 1/2] net: xilinx: axienet: Propagate errors from optional IRQ lookup

Simon Horman <[email protected]>
Newsgroups org.kernel.vger.linux-arm-msm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Message-ID <[email protected]>
On Thu, Aug 13, 2026 at 11:20:11AM +0700, [email protected] wrote:
> From: bui duc phuc <[email protected]>
> 
> platform_get_irq_optional() returns a positive IRQ number on success or
> a negative error code on failure. For an optional IRQ, -ENXIO indicates
> that no optional IRQ is available, while other errors should be propagated.
> 
> Propagate all error codes returned by platform_get_irq_optional() other
> than -ENXIO.
> 
> Another call to platform_get_irq_optional() in the same function already
> handles the return value this way. Apply the same error handling to this
> call site for consistency.

It would be useful to explain how this problem was discovered,
and what testing the patch has seen. Please add an Assisted-by
tag if appropriate.

Link: https://docs.kernel.org/process/coding-assistants.html

> 
> Signed-off-by: bui duc phuc <[email protected]>
> ---
>  drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> index fcf517069d16..d23e9796725d 100644
> --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
> @@ -2957,12 +2957,16 @@ static int axienet_probe(struct platform_device *pdev)
>  			lp->tx_irq = irq_of_parse_and_map(np, 0);
>  			of_node_put(np);
>  			lp->eth_irq = platform_get_irq_optional(pdev, 0);
> +			if (lp->eth_irq < 0 && lp->eth_irq != -ENXIO)
> +				return lp->eth_irq;
>  		} else {
>  			/* Check for these resources directly on the Ethernet node. */
>  			lp->dma_regs = devm_platform_get_and_ioremap_resource(pdev, 1, NULL);
>  			lp->rx_irq = platform_get_irq(pdev, 1);
>  			lp->tx_irq = platform_get_irq(pdev, 0);
>  			lp->eth_irq = platform_get_irq_optional(pdev, 2);
> +			if (lp->eth_irq < 0 && lp->eth_irq != -ENXIO)
> +				return lp->eth_irq;
>  		}

The same check seems to have been added to both arms of the if/else
condition. So it seems to me that it could be moved out of that condition.

I would suggest placing it below the existing rx_irq/tx_irq condition
which appears a few lines below this hunk so that those and
dma_regs errors are still propagated.

>  		if (IS_ERR(lp->dma_regs)) {
>  			dev_err(&pdev->dev, "could not map DMA regs\n");
> -- 
> 2.43.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.