aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Horne <mhorne@FreeBSD.org>2022-06-15 15:53:25 +0000
committerMitchell Horne <mhorne@FreeBSD.org>2022-06-23 18:15:10 +0000
commit8757d0fca9e6a9e174bc87728e296e5338d30eb7 (patch)
tree03c1f2c31706e40e4c291fa77e1773a2d36a28bd
parentb93985c11a6e7c7dd5fcaca8db6f4847a0126991 (diff)
downloadsrc-8757d0fca9e6a9e174bc87728e296e5338d30eb7.tar.gz
src-8757d0fca9e6a9e174bc87728e296e5338d30eb7.zip
if_ffec: free the dmamem allocation in detach
Calling bus_dmamap_destroy() for a mapping which was allocated with bus_dmamem_alloc() will result in a panic. This change is not run-time tested, but I identified the issue while implementing the analogous method in if_dwc(4), using this implementation as the template. MFC after: 1 week Sponsored by: The FreeBSD Foundation
-rw-r--r--sys/dev/ffec/if_ffec.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/ffec/if_ffec.c b/sys/dev/ffec/if_ffec.c
index cd3681dbb24c..f98e408265fd 100644
--- a/sys/dev/ffec/if_ffec.c
+++ b/sys/dev/ffec/if_ffec.c
@@ -1425,7 +1425,8 @@ ffec_detach(device_t dev)
bus_dma_tag_destroy(sc->rxbuf_tag);
if (sc->rxdesc_map != NULL) {
bus_dmamap_unload(sc->rxdesc_tag, sc->rxdesc_map);
- bus_dmamap_destroy(sc->rxdesc_tag, sc->rxdesc_map);
+ bus_dmamem_free(sc->rxdesc_tag, sc->rxdesc_ring,
+ sc->rxdesc_map);
}
if (sc->rxdesc_tag != NULL)
bus_dma_tag_destroy(sc->rxdesc_tag);
@@ -1441,7 +1442,8 @@ ffec_detach(device_t dev)
bus_dma_tag_destroy(sc->txbuf_tag);
if (sc->txdesc_map != NULL) {
bus_dmamap_unload(sc->txdesc_tag, sc->txdesc_map);
- bus_dmamap_destroy(sc->txdesc_tag, sc->txdesc_map);
+ bus_dmamem_free(sc->txdesc_tag, sc->txdesc_ring,
+ sc->txdesc_map);
}
if (sc->txdesc_tag != NULL)
bus_dma_tag_destroy(sc->txdesc_tag);