diff options
| author | Hartmut Brandt <harti@FreeBSD.org> | 2003-02-04 16:30:27 +0000 |
|---|---|---|
| committer | Hartmut Brandt <harti@FreeBSD.org> | 2003-02-04 16:30:27 +0000 |
| commit | e557905435d97c46c8ededec918bf25004db0469 (patch) | |
| tree | 456b763a94213088811e390d3dfe4a45d7fa5de6 /sys/sparc64 | |
| parent | 5a63c107db5308d1300075318ef08dc801b58154 (diff) | |
Notes
Diffstat (limited to 'sys/sparc64')
| -rw-r--r-- | sys/sparc64/sparc64/bus_machdep.c | 20 |
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) { |
