can: xilinx_can: xcan_probe(): check for error irq

For the possible failure of the platform_get_irq(), the returned irq
could be error number and will finally cause the failure of the

Consider that platform_get_irq() can now in certain cases return
-EPROBE_DEFER, and the consequences of letting request_irq()
effectively convert that into -EINVAL, even at probe time rather than
later on. So it might be better to check just now.

Fixes: b1201e44f50b ("can: xilinx CAN controller support")
Signed-off-by: Jiasheng Jiang <>
Signed-off-by: Marc Kleine-Budde <>
diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c
index e2b15d2..af4a2ad 100644
--- a/drivers/net/can/xilinx_can.c
+++ b/drivers/net/can/xilinx_can.c
@@ -1761,7 +1761,12 @@
 	/* Get IRQ for the device */
-	ndev->irq = platform_get_irq(pdev, 0);
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		goto err_free;
+	ndev->irq = ret;
 	ndev->flags |= IFF_ECHO;	/* We support local echo */
 	platform_set_drvdata(pdev, ndev);