aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Randolf <br1@einfach.org>2010-06-16 06:11:41 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-16 14:59:01 -0400
commit39d63f2a3f95dce96e65f88c0a4560c3ca857a5f (patch)
tree159fc0b200d9e6734c8109721c0414b6d052d617
parent0452d4a508d7701d37ecf5d018f38e3422acb5d2 (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.c7
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
327static inline void ath5k_rxbuf_free_skb(struct ath5k_softc *sc, 329static 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