diff options
author | jhb <jhb@FreeBSD.org> | 2014-06-10 20:25:45 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2014-06-10 20:25:45 +0000 |
commit | 02e632b71287ac53801c62c26a1c00926fca8e2d (patch) | |
tree | fce070802b2d12919f979d51576d5aad6077a6c2 /sys/dev/sym | |
parent | e250a91c1da4cfd9eb0dab8e0aac2bc6fc7a8176 (diff) | |
download | FreeBSD-src-02e632b71287ac53801c62c26a1c00926fca8e2d.zip FreeBSD-src-02e632b71287ac53801c62c26a1c00926fca8e2d.tar.gz |
Don't destroy bus_dma maps created by bus_dmamem_alloc(). In some cases,
don't create a map before calling bus_dmamem_alloc() (such maps were
leaked). It is believed that the extra destroy of the map was generally
harmless since bus_dmamem_alloc() often uses special maps for which
bus_dmamap_destroy() is a no-op (e.g. on x86).
Reviewed by: scottl
Diffstat (limited to 'sys/dev/sym')
-rw-r--r-- | sys/dev/sym/sym_hipd.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c index 75e770f..4dc5ca5 100644 --- a/sys/dev/sym/sym_hipd.c +++ b/sys/dev/sym/sym_hipd.c @@ -617,11 +617,8 @@ out_err: bus_dmamap_unload(mp->dmat, vbp->dmamap); if (vaddr) bus_dmamem_free(mp->dmat, vaddr, vbp->dmamap); - if (vbp) { - if (vbp->dmamap) - bus_dmamap_destroy(mp->dmat, vbp->dmamap); + if (vbp) __sym_mfree(&mp0, vbp, sizeof(*vbp), "VTOB"); - } return 0; } @@ -639,7 +636,6 @@ static void ___dma_freep(m_pool_s *mp, m_addr_t m) *vbpp = (*vbpp)->next; bus_dmamap_unload(mp->dmat, vbp->dmamap); bus_dmamem_free(mp->dmat, (void *) vbp->vaddr, vbp->dmamap); - bus_dmamap_destroy(mp->dmat, vbp->dmamap); __sym_mfree(&mp0, vbp, sizeof(*vbp), "VTOB"); --mp->nump; } |