diff options
author | alc <alc@FreeBSD.org> | 2008-07-15 03:34:49 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2008-07-15 03:34:49 +0000 |
commit | d4de04e9b12b0c35662441b280530b24f1a04472 (patch) | |
tree | 108e4a91f6248d3c2f096fa2c7182df936169673 /sys/i386 | |
parent | eae79cfa0fb80e366fc602240d0ef1774ba118eb (diff) | |
download | FreeBSD-src-d4de04e9b12b0c35662441b280530b24f1a04472.zip FreeBSD-src-d4de04e9b12b0c35662441b280530b24f1a04472.tar.gz |
Update bus_dmamem_alloc()'s first call to malloc() such that M_WAITOK is
specified when appropriate.
Reviewed by: scottl
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/i386/busdma_machdep.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/i386/i386/busdma_machdep.c b/sys/i386/i386/busdma_machdep.c index fc3966e..7069d2d 100644 --- a/sys/i386/i386/busdma_machdep.c +++ b/sys/i386/i386/busdma_machdep.c @@ -488,8 +488,6 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, mflags = M_NOWAIT; else mflags = M_WAITOK; - if (flags & BUS_DMA_ZERO) - mflags |= M_ZERO; /* If we succeed, no mapping/bouncing will be required */ *mapp = NULL; @@ -497,13 +495,15 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, if (dmat->segments == NULL) { dmat->segments = (bus_dma_segment_t *)malloc( sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF, - M_NOWAIT); + mflags); if (dmat->segments == NULL) { CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, ENOMEM); return (ENOMEM); } } + if (flags & BUS_DMA_ZERO) + mflags |= M_ZERO; /* * XXX: |