patch-2.4.0-test11 linux/drivers/isdn/pcbit/drv.c

Next file: linux/drivers/isdn/sc/debug.c
Previous file: linux/drivers/isdn/isdnloop/isdnloop.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test10/linux/drivers/isdn/pcbit/drv.c linux/drivers/isdn/pcbit/drv.c
@@ -114,9 +114,9 @@
 	dev->b1 = kmalloc(sizeof(struct pcbit_chan), GFP_KERNEL);
 	if (!dev->b1) {
 		printk("pcbit_init: couldn't malloc pcbit_chan struct\n");
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 		return -ENOMEM;
 	}
     
@@ -124,9 +124,9 @@
 	if (!dev->b2) {
 		printk("pcbit_init: couldn't malloc pcbit_chan struct\n");
 		kfree(dev->b1);
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 		return -ENOMEM;
 	}
 
@@ -148,9 +148,9 @@
 	{
 		kfree(dev->b1);
 		kfree(dev->b2);
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 		dev_pcbit[board] = NULL;
 		return -EIO;
 	}
@@ -170,9 +170,9 @@
 		free_irq(irq, dev);
 		kfree(dev->b1);
 		kfree(dev->b2);
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 		dev_pcbit[board] = NULL;
 		return -EIO;
 	}
@@ -201,9 +201,9 @@
 		free_irq(irq, dev);
 		kfree(dev->b1);
 		kfree(dev->b2);
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 		dev_pcbit[board] = NULL;
 		return -EIO;
 	}
@@ -239,9 +239,9 @@
 			del_timer(&dev->b2->fsm_timer);
 		kfree(dev->b1);
 		kfree(dev->b2);
-		kfree(dev);
 		iounmap((unsigned char*)dev->sh_mem);
 		release_mem_region(dev->ph_mem, 4096);
+		kfree(dev);
 	}
 }
 #endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)