Commit d51894f4 authored by roel kluin's avatar roel kluin Committed by Jeff Garzik

gianfar: fix handle errors returned by platform_get_irq*()

platform_get_irq*() returns on -ENXIO when the resource cannot be
found, but this remains unnoticed if stored in an unsigned.
Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent e1564ec9
...@@ -161,7 +161,7 @@ static int gfar_probe(struct platform_device *pdev) ...@@ -161,7 +161,7 @@ static int gfar_probe(struct platform_device *pdev)
struct gfar_private *priv = NULL; struct gfar_private *priv = NULL;
struct gianfar_platform_data *einfo; struct gianfar_platform_data *einfo;
struct resource *r; struct resource *r;
int err = 0; int err = 0, irq;
DECLARE_MAC_BUF(mac); DECLARE_MAC_BUF(mac);
einfo = (struct gianfar_platform_data *) pdev->dev.platform_data; einfo = (struct gianfar_platform_data *) pdev->dev.platform_data;
...@@ -187,15 +187,25 @@ static int gfar_probe(struct platform_device *pdev) ...@@ -187,15 +187,25 @@ static int gfar_probe(struct platform_device *pdev)
/* fill out IRQ fields */ /* fill out IRQ fields */
if (einfo->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { if (einfo->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) {
priv->interruptTransmit = platform_get_irq_byname(pdev, "tx"); irq = platform_get_irq_byname(pdev, "tx");
priv->interruptReceive = platform_get_irq_byname(pdev, "rx"); if (irq < 0)
priv->interruptError = platform_get_irq_byname(pdev, "error"); goto regs_fail;
if (priv->interruptTransmit < 0 || priv->interruptReceive < 0 || priv->interruptError < 0) priv->interruptTransmit = irq;
irq = platform_get_irq_byname(pdev, "rx");
if (irq < 0)
goto regs_fail;
priv->interruptReceive = irq;
irq = platform_get_irq_byname(pdev, "error");
if (irq < 0)
goto regs_fail; goto regs_fail;
priv->interruptError = irq;
} else { } else {
priv->interruptTransmit = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
if (priv->interruptTransmit < 0) if (irq < 0)
goto regs_fail; goto regs_fail;
priv->interruptTransmit = irq;
} }
/* get a pointer to the register memory */ /* get a pointer to the register memory */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment