瀏覽代碼

[PATCH] e1000: zero-out pointers in e1000_free_desc_rings

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>
John W. Linville 19 年之前
父節點
當前提交
6b27adb607
共有 1 個文件被更改,包括 10 次插入2 次删除
  1. 10 2
      drivers/net/e1000/e1000_ethtool.c

+ 10 - 2
drivers/net/e1000/e1000_ethtool.c

@@ -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;
 }