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>
This commit is contained in:
committed by
John W. Linville
parent
0452d4a508
commit
39d63f2a3f
@@ -322,6 +322,8 @@ static inline void ath5k_txbuf_free_skb(struct ath5k_softc *sc,
|
|||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
dev_kfree_skb_any(bf->skb);
|
dev_kfree_skb_any(bf->skb);
|
||||||
bf->skb = NULL;
|
bf->skb = NULL;
|
||||||
|
bf->skbaddr = 0;
|
||||||
|
bf->desc->ds_data = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ath5k_rxbuf_free_skb(struct ath5k_softc *sc,
|
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);
|
PCI_DMA_FROMDEVICE);
|
||||||
dev_kfree_skb_any(bf->skb);
|
dev_kfree_skb_any(bf->skb);
|
||||||
bf->skb = NULL;
|
bf->skb = NULL;
|
||||||
|
bf->skbaddr = 0;
|
||||||
|
bf->desc->ds_data = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1455,9 +1459,12 @@ ath5k_desc_free(struct ath5k_softc *sc, struct pci_dev *pdev)
|
|||||||
|
|
||||||
/* Free memory associated with all descriptors */
|
/* Free memory associated with all descriptors */
|
||||||
pci_free_consistent(pdev, sc->desc_len, sc->desc, sc->desc_daddr);
|
pci_free_consistent(pdev, sc->desc_len, sc->desc, sc->desc_daddr);
|
||||||
|
sc->desc = NULL;
|
||||||
|
sc->desc_daddr = 0;
|
||||||
|
|
||||||
kfree(sc->bufptr);
|
kfree(sc->bufptr);
|
||||||
sc->bufptr = NULL;
|
sc->bufptr = NULL;
|
||||||
|
sc->bbuf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user