diff options
author | Bruno Randolf <br1@einfach.org> | 2010-06-16 06:11:41 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-16 14:59:01 -0400 |
commit | 39d63f2a3f95dce96e65f88c0a4560c3ca857a5f (patch) | |
tree | 159fc0b200d9e6734c8109721c0414b6d052d617 | |
parent | 0452d4a508d7701d37ecf5d018f38e3422acb5d2 (diff) |
ath5k: reset more pointers after we free skbs
After we free skbs for receive or transmit descriptors, make sure we have no
pointers to the now invalid memory address.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 6c303d5d46c..5479f85fcd3 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -322,6 +322,8 @@ static inline void ath5k_txbuf_free_skb(struct ath5k_softc *sc, | |||
322 | PCI_DMA_TODEVICE); | 322 | PCI_DMA_TODEVICE); |
323 | dev_kfree_skb_any(bf->skb); | 323 | dev_kfree_skb_any(bf->skb); |
324 | bf->skb = NULL; | 324 | bf->skb = NULL; |
325 | bf->skbaddr = 0; | ||
326 | bf->desc->ds_data = 0; | ||
325 | } | 327 | } |
326 | 328 | ||
327 | static inline void ath5k_rxbuf_free_skb(struct ath5k_softc *sc, | 329 | static inline void ath5k_rxbuf_free_skb(struct ath5k_softc *sc, |
@@ -337,6 +339,8 @@ static inline void ath5k_rxbuf_free_skb(struct ath5k_softc *sc, | |||
337 | PCI_DMA_FROMDEVICE); | 339 | PCI_DMA_FROMDEVICE); |
338 | dev_kfree_skb_any(bf->skb); | 340 | dev_kfree_skb_any(bf->skb); |
339 | bf->skb = NULL; | 341 | bf->skb = NULL; |
342 | bf->skbaddr = 0; | ||
343 | bf->desc->ds_data = 0; | ||
340 | } | 344 | } |
341 | 345 | ||
342 | 346 | ||
@@ -1455,9 +1459,12 @@ ath5k_desc_free(struct ath5k_softc *sc, struct pci_dev *pdev) | |||
1455 | 1459 | ||
1456 | /* Free memory associated with all descriptors */ | 1460 | /* Free memory associated with all descriptors */ |
1457 | pci_free_consistent(pdev, sc->desc_len, sc->desc, sc->desc_daddr); | 1461 | pci_free_consistent(pdev, sc->desc_len, sc->desc, sc->desc_daddr); |
1462 | sc->desc = NULL; | ||
1463 | sc->desc_daddr = 0; | ||
1458 | 1464 | ||
1459 | kfree(sc->bufptr); | 1465 | kfree(sc->bufptr); |
1460 | sc->bufptr = NULL; | 1466 | sc->bufptr = NULL; |
1467 | sc->bbuf = NULL; | ||
1461 | } | 1468 | } |
1462 | 1469 | ||
1463 | 1470 | ||