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 <b...@einfach.org>
---
 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 2d15125..7e14eb6 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,
                        PCI_DMA_TODEVICE);
        dev_kfree_skb_any(bf->skb);
        bf->skb = NULL;
+       bf->skbaddr = 0;
+       bf->desc->ds_data = 0;
 }
 
 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,
                        PCI_DMA_FROMDEVICE);
        dev_kfree_skb_any(bf->skb);
        bf->skb = NULL;
+       bf->skbaddr = 0;
+       bf->desc->ds_data = 0;
 }
 
 
@@ -1457,9 +1461,12 @@ ath5k_desc_free(struct ath5k_softc *sc, struct pci_dev 
*pdev)
 
        /* Free memory associated with all descriptors */
        pci_free_consistent(pdev, sc->desc_len, sc->desc, sc->desc_daddr);
+       sc->desc = NULL;
+       sc->desc_daddr = 0;
 
        kfree(sc->bufptr);
        sc->bufptr = NULL;
+       sc->bbuf = NULL;
 }
 
 

_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to