Index: dev/sgmap_common.c =================================================================== RCS file: /OpenBSD/src/sys/arch/alpha/dev/sgmap_common.c,v retrieving revision 1.14 diff -u -p -r1.14 sgmap_common.c --- dev/sgmap_common.c 9 Dec 2014 06:58:28 -0000 1.14 +++ dev/sgmap_common.c 13 May 2019 16:39:50 -0000 @@ -150,6 +150,8 @@ alpha_sgmap_dmamap_setup(map, nsegments, { map->_dm_cookie = mallocarray(nsegments, sizeof(struct extent_region), M_DEVBUF, (flags & BUS_DMA_NOWAIT) ? M_NOWAIT : M_WAITOK); + if (map->_dm_cookie != NULL) + map->_dm_cookiesize = nsegments * sizeof(struct extent_region); return (map->_dm_cookie == NULL); } @@ -187,7 +189,7 @@ void alpha_sgmap_dmamap_teardown(map) bus_dmamap_t map; { - free(map->_dm_cookie, M_DEVBUF, 0); + free(map->_dm_cookie, M_DEVBUF, map->_dm_cookiesize); } void Index: include/bus.h =================================================================== RCS file: /OpenBSD/src/sys/arch/alpha/include/bus.h,v retrieving revision 1.31 diff -u -p -r1.31 bus.h --- include/bus.h 8 May 2017 00:27:45 -0000 1.31 +++ include/bus.h 13 May 2019 16:39:50 -0000 @@ -648,6 +648,7 @@ struct alpha_bus_dmamap { * Private cookie to be used by the DMA back-end. */ void *_dm_cookie; + size_t _dm_cookiesize; /* size allocated for _dm_cookie */ /* * The DMA window that we ended up being mapped in. Index: isa/isadma_bounce.c =================================================================== RCS file: /OpenBSD/src/sys/arch/alpha/isa/isadma_bounce.c,v retrieving revision 1.12 diff -u -p -r1.12 isadma_bounce.c --- isa/isadma_bounce.c 27 Sep 2015 10:12:09 -0000 1.12 +++ isa/isadma_bounce.c 13 May 2019 16:39:50 -0000 @@ -115,6 +115,7 @@ isadma_bounce_dmamap_create(bus_dma_tag_ map = *dmamp; map->_dm_cookie = NULL; + map->_dm_cookiesize = 0; cookiesize = sizeof(*cookie); @@ -156,6 +157,7 @@ isadma_bounce_dmamap_create(bus_dma_tag_ cookie = (struct isadma_bounce_cookie *)cookiestore; cookie->id_flags = cookieflags; map->_dm_cookie = cookie; + map->_dm_cookiesize = cookiesize; if (cookieflags & ID_MIGHT_NEED_BOUNCE) { /* @@ -190,7 +192,7 @@ isadma_bounce_dmamap_destroy(bus_dma_tag if (cookie->id_flags & ID_HAS_BOUNCE) isadma_bounce_free_bouncebuf(t, map); - free(cookie, M_DEVBUF, 0); + free(cookie, M_DEVBUF, map->_dm_cookiesize); _bus_dmamap_destroy(t, map); }