Dan Carpenter <dan.carpenter@xxxxxxxxxx> writes: > Most kernel functions return negative error codes but some irq functions > return zero on error. In this code irq_of_parse_and_map(), returns zero > and platform_get_irq() returns negative error codes. We need to handle > both cases appropriately. > > Fixes: 8425c41d1ef7 ("net: ll_temac: Extend support to non-device-tree platforms") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Acked-by: Esben Haabendal <esben@xxxxxxxxxx> > --- > drivers/net/ethernet/xilinx/ll_temac_main.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c > index e0ac1bcd9925..49f303353ecb 100644 > --- a/drivers/net/ethernet/xilinx/ll_temac_main.c > +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c > @@ -1567,12 +1567,16 @@ static int temac_probe(struct platform_device *pdev) > } > > /* Error handle returned DMA RX and TX interrupts */ > - if (lp->rx_irq < 0) > - return dev_err_probe(&pdev->dev, lp->rx_irq, > + if (lp->rx_irq <= 0) { > + rc = lp->rx_irq ?: -EINVAL; > + return dev_err_probe(&pdev->dev, rc, > "could not get DMA RX irq\n"); > - if (lp->tx_irq < 0) > - return dev_err_probe(&pdev->dev, lp->tx_irq, > + } > + if (lp->tx_irq <= 0) { > + rc = lp->tx_irq ?: -EINVAL; > + return dev_err_probe(&pdev->dev, rc, > "could not get DMA TX irq\n"); > + } > > if (temac_np) { > /* Retrieve the MAC address */