[PATCH] e1000: zero-out pointers in e1000_free_desc_rings
authorJohn W. Linville <linville@tuxdriver.com>
Tue, 8 Nov 2005 20:59:30 +0000 (15:59 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 18 Nov 2005 18:52:39 +0000 (13:52 -0500)
In e1000_free_desc_rings, zero-out pointers after the memory they
point to is freed.  The test rings are static and get re-used, and
failures during subsequent test setups can cause e1000_free_desc_rings
to get called with dirty pointers.  Dirty pointers can cause oopses
or crashes...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/e1000/e1000_ethtool.c

index 8584e9382c2cd634aaa138eb56bf98cf29497ed8..8646914964e7fa16be01f50db5c508af73ae9b10 100644 (file)
@@ -960,13 +960,21 @@ e1000_free_desc_rings(struct e1000_adapter *adapter)
                }
        }
 
-       if(txdr->desc)
+       if(txdr->desc) {
                pci_free_consistent(pdev, txdr->size, txdr->desc, txdr->dma);
-       if(rxdr->desc)
+               txdr->desc = NULL;
+       }
+       if(rxdr->desc) {
                pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma);
+               rxdr->desc = NULL;
+       }
 
        kfree(txdr->buffer_info);
+       txdr->buffer_info = NULL;
+
        kfree(rxdr->buffer_info);
+       rxdr->buffer_info = NULL;
+
        return;
 }