Skip to contentSkip to conversation

net driver fixes

PATCH In review Jeff Garzik 1 participant 2 messages Dec 5, 2003 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net driver fixes

Linus, please do a

bk pull bk://gkernel.bkbits.net/net-drivers-2.5

This will update the following files:

 drivers/net/pci-skeleton.c |    7 ---
 drivers/net/pcnet32.c      |    2 
 drivers/net/r8169.c        |    4 -
 drivers/net/sis190.c       |    4 -
 drivers/net/typhoon.c      |   97 ++++++++++++++++++++++++++++++++++++---------
 5 files changed, 78 insertions(+), 36 deletions(-)

through these ChangeSets:

<[email protected]> (03/12/05 1.1499)
[netdrvr pcnet32] fix oops on unload

Driver was calling pci_unregister_driver for each _device_, and then again at the end of the module unload routine. Remove the call that's inside the loop, pci_unregister_driver should only be called once.

Caught by Don Fry (and many others)

<[email protected]> (03/12/03 1.1496.1.9)
[netdrvr] remove manual driver poisoning of net_device

Such poisoning can cause oopses either because the refcount is not zero when the poisoning occurs, or due to kernel debugging options being enabled.

<[email protected]> (03/11/26 1.1486.1.1)
Bug fixes:
* Avoid short timeouts when waiting for a reset
* Fix issue with loading runtime image on newer versions of the sleep image
* Fix link status reporting

drivers/net/pci-skeleton.c +0 -7
diff -Nru a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c
@@ -864,13 +864,6 @@
 
 	pci_release_regions (pdev);
 
-#ifndef NETDRV_NDEBUG
-	/* poison memory before freeing */
-	memset (dev, 0xBC,
-		sizeof (struct net_device) +
-		sizeof (struct netdrv_private));
-#endif /* NETDRV_NDEBUG */
-
 	free_netdev (dev);
 
 	pci_set_drvdata (pdev, NULL);
drivers/net/pcnet32.c +0 -2
diff -Nru a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
@@ -1766,8 +1766,6 @@
 	next_dev = lp->next;
 	unregister_netdev(pcnet32_dev);
 	release_region(pcnet32_dev->base_addr, PCNET32_TOTAL_SIZE);
-	if (lp->pci_dev)
-	    pci_unregister_driver(&pcnet32_driver);
 	pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
 	free_netdev(pcnet32_dev);
 	pcnet32_dev = next_dev;
drivers/net/r8169.c +0 -4
diff -Nru a/drivers/net/r8169.c b/drivers/net/r8169.c
@@ -642,10 +642,6 @@
 	iounmap(tp->mmio_addr);
 	pci_release_regions(pdev);
 
-	// poison memory before freeing 
-	memset(dev, 0xBC,
-	       sizeof (struct net_device) + sizeof (struct rtl8169_private));
-
 	pci_disable_device(pdev);
 	free_netdev(dev);
 	pci_set_drvdata(pdev, NULL);
drivers/net/sis190.c +0 -4
diff -Nru a/drivers/net/sis190.c b/drivers/net/sis190.c
@@ -703,10 +703,6 @@
 	iounmap(tp->mmio_addr);
 	pci_release_regions(pdev);
 
-	// poison memory before freeing 
-	memset(dev, 0xBC,
-	       sizeof (struct net_device) + sizeof (struct sis190_private));
-
 	free_netdev(dev);
 	pci_set_drvdata(pdev, NULL);
 }
drivers/net/typhoon.c +78 -19

178 lines not on this page · raw message

#1 lore raw
Quoted 4 lines · Jeff Garzik

Linus, please do a

bk pull bk://gkernel.bkbits.net/net-drivers-2.5

Quoted 8 lines

This will update the following files:

 drivers/net/pci-skeleton.c |    7 ---
 drivers/net/pcnet32.c      |    2 
 drivers/net/r8169.c        |    4 -
 drivers/net/sis190.c       |    4 -
 drivers/net/typhoon.c      |   97 ++++++++++++++++++++++++++++++++++++---------
 5 files changed, 78 insertions(+), 36 deletions(-)

So following that email... you just wanna truncate this patch -- snip the typhoon portion and apply the rest?

This will update the following files:

 drivers/net/pci-skeleton.c |    7 ---
 drivers/net/pcnet32.c      |    2 
 drivers/net/r8169.c        |    4 -
 drivers/net/sis190.c       |    4 -

through these ChangeSets:

<[email protected]> (03/12/05 1.1499)
[netdrvr pcnet32] fix oops on unload

Driver was calling pci_unregister_driver for each _device_, and then again at the end of the module unload routine. Remove the call that's inside the loop, pci_unregister_driver should only be called once.

Caught by Don Fry (and many others)

<[email protected]> (03/12/03 1.1496.1.9)
[netdrvr] remove manual driver poisoning of net_device

Such poisoning can cause oopses either because the refcount is not zero when the poisoning occurs, or due to kernel debugging options being enabled.

drivers/net/pci-skeleton.c +0 -7
diff -Nru a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c
@@ -864,13 +864,6 @@
 
 	pci_release_regions (pdev);
 
-#ifndef NETDRV_NDEBUG
-	/* poison memory before freeing */
-	memset (dev, 0xBC,
-		sizeof (struct net_device) +
-		sizeof (struct netdrv_private));
-#endif /* NETDRV_NDEBUG */
-
 	free_netdev (dev);
 
 	pci_set_drvdata (pdev, NULL);
drivers/net/pcnet32.c +0 -2
diff -Nru a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c
@@ -1766,8 +1766,6 @@
 	next_dev = lp->next;
 	unregister_netdev(pcnet32_dev);
 	release_region(pcnet32_dev->base_addr, PCNET32_TOTAL_SIZE);
-	if (lp->pci_dev)
-	    pci_unregister_driver(&pcnet32_driver);
 	pci_free_consistent(lp->pci_dev, sizeof(*lp), lp, lp->dma_addr);
 	free_netdev(pcnet32_dev);
 	pcnet32_dev = next_dev;
drivers/net/r8169.c +0 -4
diff -Nru a/drivers/net/r8169.c b/drivers/net/r8169.c
@@ -642,10 +642,6 @@
 	iounmap(tp->mmio_addr);
 	pci_release_regions(pdev);
 
-	// poison memory before freeing 
-	memset(dev, 0xBC,
-	       sizeof (struct net_device) + sizeof (struct rtl8169_private));
-
 	pci_disable_device(pdev);
 	free_netdev(dev);
 	pci_set_drvdata(pdev, NULL);
drivers/net/sis190.c +0 -4
diff -Nru a/drivers/net/sis190.c b/drivers/net/sis190.c
@@ -703,10 +703,6 @@
 	iounmap(tp->mmio_addr);
 	pci_release_regions(pdev);
 
-	// poison memory before freeing 
-	memset(dev, 0xBC,
-	       sizeof (struct net_device) + sizeof (struct sis190_private));
-
 	free_netdev(dev);
 	pci_set_drvdata(pdev, NULL);
 }