aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/re
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-01-13 23:00:28 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-01-13 23:00:28 +0000
commit9e18005d99c785ebd9bb511e39a10971fbbade69 (patch)
treed0c0e7f190ba7e7b47537698f976e0f61eb5a8a8 /sys/dev/re
parentea40bc90e19141f8026a95235ba160ffe625e468 (diff)
downloadsrc-9e18005d99c785ebd9bb511e39a10971fbbade69.tar.gz
src-9e18005d99c785ebd9bb511e39a10971fbbade69.zip
Make sure to check validity of dma maps before destroying.
Notes
Notes: svn path=/head/; revision=217384
Diffstat (limited to 'sys/dev/re')
-rw-r--r--sys/dev/re/if_re.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index f9c72b0a47ab..92db00a03b63 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -1663,15 +1663,19 @@ re_detach(device_t dev)
/* Destroy all the RX and TX buffer maps */
if (sc->rl_ldata.rl_tx_mtag) {
- for (i = 0; i < sc->rl_ldata.rl_tx_desc_cnt; i++)
- bus_dmamap_destroy(sc->rl_ldata.rl_tx_mtag,
- sc->rl_ldata.rl_tx_desc[i].tx_dmamap);
+ for (i = 0; i < sc->rl_ldata.rl_tx_desc_cnt; i++) {
+ if (sc->rl_ldata.rl_tx_desc[i].tx_dmamap)
+ bus_dmamap_destroy(sc->rl_ldata.rl_tx_mtag,
+ sc->rl_ldata.rl_tx_desc[i].tx_dmamap);
+ }
bus_dma_tag_destroy(sc->rl_ldata.rl_tx_mtag);
}
if (sc->rl_ldata.rl_rx_mtag) {
- for (i = 0; i < sc->rl_ldata.rl_rx_desc_cnt; i++)
- bus_dmamap_destroy(sc->rl_ldata.rl_rx_mtag,
- sc->rl_ldata.rl_rx_desc[i].rx_dmamap);
+ for (i = 0; i < sc->rl_ldata.rl_rx_desc_cnt; i++) {
+ if (sc->rl_ldata.rl_rx_desc[i].rx_dmamap)
+ bus_dmamap_destroy(sc->rl_ldata.rl_rx_mtag,
+ sc->rl_ldata.rl_rx_desc[i].rx_dmamap);
+ }
if (sc->rl_ldata.rl_rx_sparemap)
bus_dmamap_destroy(sc->rl_ldata.rl_rx_mtag,
sc->rl_ldata.rl_rx_sparemap);