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);
}