summaryrefslogtreecommitdiff
path: root/sys/sparc64
diff options
context:
space:
mode:
authorHartmut Brandt <harti@FreeBSD.org>2003-02-04 16:30:27 +0000
committerHartmut Brandt <harti@FreeBSD.org>2003-02-04 16:30:27 +0000
commite557905435d97c46c8ededec918bf25004db0469 (patch)
tree456b763a94213088811e390d3dfe4a45d7fa5de6 /sys/sparc64
parent5a63c107db5308d1300075318ef08dc801b58154 (diff)
Notes
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/bus_machdep.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/sparc64/sparc64/bus_machdep.c b/sys/sparc64/sparc64/bus_machdep.c
index f11e9a01cca2..0c26023a22d0 100644
--- a/sys/sparc64/sparc64/bus_machdep.c
+++ b/sys/sparc64/sparc64/bus_machdep.c
@@ -454,10 +454,12 @@ nexus_dmamap_load_mbuf(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat,
struct mbuf *m;
for (m = m0; m != NULL && error == 0; m = m->m_next) {
- error = _nexus_dmamap_load_buffer(ddmat,
- dm_segments, m->m_data, m->m_len, NULL, flags,
- &lastaddr, &nsegs, first);
- first = 0;
+ if (m->m_len > 0) {
+ error = _nexus_dmamap_load_buffer(ddmat,
+ dm_segments, m->m_data, m->m_len, NULL,
+ flags, &lastaddr, &nsegs, first);
+ first = 0;
+ }
}
} else {
error = EINVAL;
@@ -514,11 +516,13 @@ nexus_dmamap_load_uio(bus_dma_tag_t pdmat, bus_dma_tag_t ddmat,
resid < iov[i].iov_len ? resid : iov[i].iov_len;
caddr_t addr = (caddr_t) iov[i].iov_base;
- error = _nexus_dmamap_load_buffer(ddmat, dm_segments, addr,
- minlen, td, flags, &lastaddr, &nsegs, first);
- first = 0;
+ if (minlen > 0) {
+ error = _nexus_dmamap_load_buffer(ddmat, dm_segments,
+ addr, minlen, td, flags, &lastaddr, &nsegs, first);
+ first = 0;
- resid -= minlen;
+ resid -= minlen;
+ }
}
if (error) {