[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>
This commit is contained in:
parent
e98fc4aae1
commit
6b27adb607
1 changed files with 10 additions and 2 deletions
|
@ -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);
|
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);
|
pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma);
|
||||||
|
rxdr->desc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
kfree(txdr->buffer_info);
|
kfree(txdr->buffer_info);
|
||||||
|
txdr->buffer_info = NULL;
|
||||||
|
|
||||||
kfree(rxdr->buffer_info);
|
kfree(rxdr->buffer_info);
|
||||||
|
rxdr->buffer_info = NULL;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue