summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authormux <mux@FreeBSD.org>2003-03-13 17:10:54 +0000
committermux <mux@FreeBSD.org>2003-03-13 17:10:54 +0000
commitd3ce48cb48061b92b1b7ac962379bf631017e7b1 (patch)
tree6e8a272b5972c1eb487fdd96b5d013d3731c90bf /sys/ia64
parent48bb025c583d55ca6a62180b3bcf8b04f7117505 (diff)
downloadFreeBSD-src-d3ce48cb48061b92b1b7ac962379bf631017e7b1.zip
FreeBSD-src-d3ce48cb48061b92b1b7ac962379bf631017e7b1.tar.gz
Memory allocated with contigmalloc() should be freed with
contigfree(), not with free().
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/busdma_machdep.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/ia64/ia64/busdma_machdep.c b/sys/ia64/ia64/busdma_machdep.c
index fa0b08d..e7c38be 100644
--- a/sys/ia64/ia64/busdma_machdep.c
+++ b/sys/ia64/ia64/busdma_machdep.c
@@ -377,7 +377,10 @@ bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
*/
if (map != &nobounce_dmamap)
panic("bus_dmamem_free: Invalid map freed\n");
- free(vaddr, M_DEVBUF);
+ if ((dmat->maxsize <= PAGE_SIZE) && dmat->lowaddr >= ptoa(Maxmem))
+ free(vaddr, M_DEVBUF);
+ else
+ contigfree(vaddr, dmat->maxsize, M_DEVBUF);
}
#define BUS_DMAMAP_NSEGS ((64 * 1024 / PAGE_SIZE) + 1)
OpenPOWER on IntegriCloud