svn commit: r220701 - head/sys/dev/iwn
Bernhard Schmidt
bschmidt at FreeBSD.org
Sat Apr 16 10:35:02 UTC 2011
Author: bschmidt
Date: Sat Apr 16 10:35:02 2011
New Revision: 220701
URL: http://svn.freebsd.org/changeset/base/220701
Log:
Make sure to destroy all DMA tags and maps.
Modified:
head/sys/dev/iwn/if_iwn.c
Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c Sat Apr 16 10:32:46 2011 (r220700)
+++ head/sys/dev/iwn/if_iwn.c Sat Apr 16 10:35:02 2011 (r220701)
@@ -1159,16 +1159,20 @@ fail:
static void
iwn_dma_contig_free(struct iwn_dma_info *dma)
{
- if (dma->tag != NULL) {
- if (dma->map != NULL) {
- if (dma->paddr == 0) {
- bus_dmamap_sync(dma->tag, dma->map,
- BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
- bus_dmamap_unload(dma->tag, dma->map);
- }
+ if (dma->map != NULL) {
+ if (dma->vaddr != NULL) {
+ bus_dmamap_sync(dma->tag, dma->map,
+ BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+ bus_dmamap_unload(dma->tag, dma->map);
bus_dmamem_free(dma->tag, &dma->vaddr, dma->map);
+ dma->vaddr = NULL;
}
+ bus_dmamap_destroy(dma->tag, dma->map);
+ dma->map = NULL;
+ }
+ if (dma->tag != NULL) {
bus_dma_tag_destroy(dma->tag);
+ dma->tag = NULL;
}
}
@@ -1360,6 +1364,10 @@ iwn_free_rx_ring(struct iwn_softc *sc, s
if (data->map != NULL)
bus_dmamap_destroy(ring->data_dmat, data->map);
}
+ if (ring->data_dmat != NULL) {
+ bus_dma_tag_destroy(ring->data_dmat);
+ ring->data_dmat = NULL;
+ }
}
static int
@@ -1479,6 +1487,10 @@ iwn_free_tx_ring(struct iwn_softc *sc, s
if (data->map != NULL)
bus_dmamap_destroy(ring->data_dmat, data->map);
}
+ if (ring->data_dmat != NULL) {
+ bus_dma_tag_destroy(ring->data_dmat);
+ ring->data_dmat = NULL;
+ }
}
static void
More information about the svn-src-head
mailing list