diff --git a/sys/dev/tws/tws.c b/sys/dev/tws/tws.c index 6ebde757444..11013cbc2b5 100644 --- a/sys/dev/tws/tws.c +++ b/sys/dev/tws/tws.c @@ -310,6 +310,12 @@ tws_attach(device_t dev) attach_fail_4: tws_teardown_intr(sc); destroy_dev(sc->tws_cdev); + if (sc->dma_mem_phys) + bus_dmamap_unload(sc->cmd_tag, sc->cmd_map); + if (sc->dma_mem) + bus_dmamem_free(sc->cmd_tag, sc->dma_mem, sc->cmd_map); + if (sc->cmd_tag) + bus_dma_tag_destroy(sc->cmd_tag); attach_fail_3: for(i=0;iirqs;i++) { if ( sc->irq_res[i] ){ @@ -383,6 +389,13 @@ tws_detach(device_t dev) tws_cam_detach(sc); + if (sc->dma_mem_phys) + bus_dmamap_unload(sc->cmd_tag, sc->cmd_map); + if (sc->dma_mem) + bus_dmamem_free(sc->cmd_tag, sc->dma_mem, sc->cmd_map); + if (sc->cmd_tag) + bus_dma_tag_destroy(sc->cmd_tag); + /* Release memory resource */ if ( sc->mfa_res ){ if (bus_release_resource(sc->tws_dev,