diff options
author | raj <raj@FreeBSD.org> | 2008-03-12 15:31:37 +0000 |
---|---|---|
committer | raj <raj@FreeBSD.org> | 2008-03-12 15:31:37 +0000 |
commit | 5df2af982ffcfe5fff780895393862df1a141eb1 (patch) | |
tree | 4451957a0fb81d32ccbdc4526edad5bf39d35218 /sys/arm | |
parent | 2095d4da4d60956a09b6c67940392e12c572e6d6 (diff) | |
download | FreeBSD-src-5df2af982ffcfe5fff780895393862df1a141eb1.zip FreeBSD-src-5df2af982ffcfe5fff780895393862df1a141eb1.tar.gz |
Improve ARM bus_dmamap_load_buffer() error handling.
Reviewed by: imp
Approved by: cognet (mentor)
Spotted by: Grzegorz Bernacki gjb AT semihalf DOT com
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/arm/busdma_machdep.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c index 61c1ea2..1c3be12 100644 --- a/sys/arm/arm/busdma_machdep.c +++ b/sys/arm/arm/busdma_machdep.c @@ -755,7 +755,9 @@ bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t *segs, * XXX in user address space. */ if (__predict_true(pmap == pmap_kernel())) { - (void) pmap_get_pde_pte(pmap, vaddr, &pde, &ptep); + if (pmap_get_pde_pte(pmap, vaddr, &pde, &ptep) == FALSE) + return (EFAULT); + if (__predict_false(pmap_pde_section(pde))) { if (*pde & L1_S_SUPERSEC) curaddr = (*pde & L1_SUP_FRAME) | @@ -903,7 +905,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d", __func__, dmat, dmat->flags, nsegs + 1, error); - return (0); + return (error); } /* |