patch-2.4.19 linux-2.4.19/drivers/net/dgrs.c
Next file: linux-2.4.19/drivers/net/dl2k.c
Previous file: linux-2.4.19/drivers/net/depca.c
Back to the patch index
Back to the overall index
- Lines: 74
- Date:
Fri Aug 2 17:39:44 2002
- Orig file:
linux-2.4.18/drivers/net/dgrs.c
- Orig date:
Sun Sep 30 12:26:06 2001
diff -urN linux-2.4.18/drivers/net/dgrs.c linux-2.4.19/drivers/net/dgrs.c
@@ -1153,9 +1153,7 @@
*/
rc = dgrs_download(dev);
if (rc)
- {
- return rc;
- }
+ goto err_out;
/*
* Get ether address of board
@@ -1169,7 +1167,8 @@
if (dev->dev_addr[0] & 1)
{
printk("%s: Illegal Ethernet Address\n", dev->name);
- return (-ENXIO);
+ rc = -ENXIO;
+ goto err_out;
}
/*
@@ -1178,9 +1177,10 @@
*/
if (priv->plxreg)
OUTL(dev->base_addr + PLX_LCL2PCI_DOORBELL, 1);
+
rc = request_irq(dev->irq, &dgrs_intr, SA_SHIRQ, "RightSwitch", dev);
if (rc)
- return (rc);
+ goto err_out;
priv->intrcnt = 0;
for (i = jiffies + 2*HZ + HZ/2; time_after(i, jiffies); )
@@ -1191,16 +1191,22 @@
}
if (priv->intrcnt < 2)
{
- printk("%s: Not interrupting on IRQ %d (%d)\n",
+ printk(KERN_ERR "%s: Not interrupting on IRQ %d (%d)\n",
dev->name, dev->irq, priv->intrcnt);
- return (-ENXIO);
+ rc = -ENXIO;
+ goto err_free_irq;
}
/*
* Register the /proc/ioports information...
*/
- request_region(dev->base_addr, 256, "RightSwitch");
-
+ if (!request_region(dev->base_addr, 256, "RightSwitch")) {
+ printk(KERN_ERR "%s: io 0x%3lX, which is busy.\n", dev->name,
+ dev->base_addr);
+ rc = -EBUSY;
+ goto err_free_irq;
+ }
+
/*
* Entry points...
*/
@@ -1211,7 +1217,12 @@
dev->set_multicast_list = &dgrs_set_multicast_list;
dev->do_ioctl = &dgrs_ioctl;
- return (0);
+ return rc;
+
+err_free_irq:
+ free_irq(dev->irq, dev);
+err_out:
+ return rc;
}
int __init
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)