patch-2.4.0-test11 linux/drivers/net/aironet4500_card.c
Next file: linux/drivers/net/aironet4500_core.c
Previous file: linux/drivers/net/acenic.c
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Tue Nov 7 11:02:24 2000
- Orig file:
v2.4.0-test10/linux/drivers/net/aironet4500_card.c
- Orig date:
Tue Oct 31 12:42:26 2000
diff -u --recursive --new-file v2.4.0-test10/linux/drivers/net/aironet4500_card.c linux/drivers/net/aironet4500_card.c
@@ -164,16 +164,23 @@
static int awc_pci_init(struct net_device * dev, struct pci_dev *pdev,
int ioaddr, int cis_addr, int mem_addr, u8 pci_irq_line) {
- int i;
+ int i, allocd_dev = 0;
if (!dev) {
- dev = init_etherdev(dev, 0 );
+ dev = init_etherdev(NULL, 0);
+ if (!dev)
+ return -ENOMEM;
+ allocd_dev = 1;
}
dev->priv = kmalloc(sizeof(struct awc_private),GFP_KERNEL );
memset(dev->priv,0,sizeof(struct awc_private));
if (!dev->priv) {
printk(KERN_CRIT "aironet4x00: could not allocate device private, some unstability may follow\n");
- return -1;
+ if (allocd_dev) {
+ unregister_netdev(dev);
+ kfree(dev);
+ }
+ return -ENOMEM;
};
// ether_setup(dev);
@@ -194,7 +201,16 @@
dev->watchdog_timeo = AWC_TX_TIMEOUT;
- request_irq(dev->irq,awc_interrupt, SA_SHIRQ | SA_INTERRUPT ,"Aironet 4X00",dev);
+ i = request_irq(dev->irq,awc_interrupt, SA_SHIRQ | SA_INTERRUPT, dev->name, dev);
+ if (i) {
+ kfree(dev->priv);
+ dev->priv = NULL;
+ if (allocd_dev) {
+ unregister_netdev(dev);
+ kfree(dev);
+ }
+ return i;
+ }
awc_private_init( dev);
awc_init(dev);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)