map is passed straight into free where it gets overwritten with junk.
No other arch makes map invalid before free, and my N2100 didn't
suddenly misbehave either.

ok?

Index: arch/arm/arm/bus_dma.c
===================================================================
RCS file: /home/vcs/cvs/openbsd/src/sys/arch/arm/arm/bus_dma.c,v
retrieving revision 1.28
diff -u -p -r1.28 bus_dma.c
--- arch/arm/arm/bus_dma.c      16 Nov 2014 12:30:56 -0000      1.28
+++ arch/arm/arm/bus_dma.c      6 Mar 2016 11:34:35 -0000
@@ -164,15 +164,6 @@ _bus_dmamap_destroy(bus_dma_tag_t t, bus
        printf("dmamap_destroy: t=%p map=%p\n", t, map);
 #endif /* DEBUG_DMA */
 
-       /*
-        * Explicit unload.
-        */
-       map->dm_mapsize = 0;
-       map->dm_nsegs = 0;
-       map->_dm_origbuf = NULL;
-       map->_dm_buftype = ARM32_BUFTYPE_INVALID;
-       map->_dm_proc = NULL;
-
        free(map, M_DEVBUF, 0);
 }
 

Reply via email to