(9/9) freenetdev - fix leaky drivers

Started by Stephen Hemminger on Aug 19, 2003

DORMANTno replies

open the first message on its own page

When doing the audit for this change, it was obvious that several drivers
allocate but never free the net_device.

This fixes these drivers.  This patch is riskier than the earlier
ones, because it isn't just a simple substitution and maybe there
is a reason they never free.

diff -Nru a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
--- a/drivers/message/fusion/mptlan.c	Tue Aug 19 09:05:35 2003
+++ b/drivers/message/fusion/mptlan.c	Tue Aug 19 09:05:35 2003
@@ -1534,7 +1534,7 @@
 		printk (KERN_INFO ": %s/%s: Fusion MPT LAN device unregistered\n",
 			       IOC_AND_NETDEV_NAMES_s_s(dev));
 		unregister_netdev(dev);
-		//mpt_landev[i] = (struct net_device *) 0xdeadbeef; /* Debug */
+		free_netdev(dev);
 		mpt_landev[i] = NULL;
 	}
 
diff -Nru a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c
--- a/drivers/net/lasi_82596.c	Tue Aug 19 09:05:35 2003
+++ b/drivers/net/lasi_82596.c	Tue Aug 19 09:05:35 2003
@@ -1596,7 +1596,7 @@
 		lp = (struct i596_private *) netdevice->priv;
 		dma_free_noncoherent(lp->dev, sizeof(struct i596_private), 
 				       (void *)netdevice->mem_start, lp->dma_addr);
-		netdevice->priv = NULL;
+		free_netdev(netdevice);
 	}
 
 	unregister_parisc_driver(&lan_driver);
diff -Nru a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
--- a/drivers/net/wan/cosa.c	Tue Aug 19 09:05:35 2003
+++ b/drivers/net/wan/cosa.c	Tue Aug 19 09:05:35 2003
@@ -632,6 +632,7 @@
 {
 	sppp_detach(chan->pppdev.dev);
 	unregister_netdev(chan->pppdev.dev);
+	free_netdev(chan->ppp.dev);
 }
 
 static int cosa_sppp_open(struct net_device *d)
diff -Nru a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
--- a/drivers/usb/gadget/ether.c	Tue Aug 19 09:05:35 2003
+++ b/drivers/usb/gadget/ether.c	Tue Aug 19 09:05:35 2003
@@ -1635,6 +1635,7 @@
 	}
 
 	unregister_netdev (dev->net);
+	free_netdev(dev->net);
 
 	/* assuming we used keventd, it must quiesce too */
 	flush_scheduled_work ();
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help