| Kernel v2.4.1 /drivers/net/myri_sbus.c |
|---|
 2.4.1
 drivers
 net
 myri_sbus.c
diff -u --recursive --new-file v2.4.0/linux/drivers/net/myri_sbus.c linux/drivers/net/myri_sbus.c
--- v2.4.0/linux/drivers/net/myri_sbus.c Mon Jun 19 13:30:58 2000
+++ linux/drivers/net/myri_sbus.c Mon Jan 22 13:30:20 2001
@@ -892,6 +892,9 @@
DET(("myri_ether_init(%p,%p,%d):\n", dev, sdev, num));
dev = init_etherdev(0, sizeof(struct myri_eth));
+ if (!dev)
+ return -ENOMEM;
+
if (version_printed++ == 0)
printk(version);
@@ -982,7 +985,7 @@
mp->reg_size, "MyriCOM Regs");
if (!mp->regs) {
printk("MyriCOM: Cannot map MyriCOM registers.\n");
- return -ENODEV;
+ goto err;
}
mp->lanai = (unsigned short *) (mp->regs + (256 * 1024));
mp->lanai3 = (unsigned int *) mp->lanai;
@@ -1059,7 +1062,7 @@
if (request_irq(dev->irq, &myri_interrupt,
SA_SHIRQ, "MyriCOM Ethernet", (void *) dev)) {
printk("MyriCOM: Cannot register interrupt handler.\n");
- return -ENODEV;
+ goto err;
}
DET(("ether_setup()\n"));
@@ -1083,6 +1086,9 @@
root_myri_dev = mp;
#endif
return 0;
+err: unregister_netdev(dev);
+ kfree(dev);
+ return -ENODEV;
}
static int __init myri_sbus_match(struct sbus_dev *sdev)
|