From 59795d428e44aa5de0a8cf59e88c36ce3cc39846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 11 Nov 2008 09:10:45 +0000 Subject: [PATCH] * Applied patch by Adrian: compat_read() was broken as it only considered the first chunk of a possibly multi-buffer mbuf. This fixes #2840, thanks a lot! * Fixed warning in _bus_dmamap_load_buffer(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28599 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/libs/compat/freebsd_network/device.c | 4 ++-- src/libs/compat/freebsd_network/fbsd_busdma_x86.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/compat/freebsd_network/device.c b/src/libs/compat/freebsd_network/device.c index be41af7f57..730327ddd5 100644 --- a/src/libs/compat/freebsd_network/device.c +++ b/src/libs/compat/freebsd_network/device.c @@ -125,7 +125,7 @@ compat_read(void *cookie, off_t position, void *buffer, size_t *numBytes) IF_DEQUEUE(&ifp->receive_queue, mb); } while (mb == NULL); - length = min_c(max_c((size_t)mb->m_len, 0), *numBytes); + length = min_c(max_c((size_t)mb->m_pkthdr.len, 0), *numBytes); #if 0 mb = m_defrag(mb, 0); @@ -135,7 +135,7 @@ compat_read(void *cookie, off_t position, void *buffer, size_t *numBytes) } #endif - memcpy(buffer, mtod(mb, const void *), length); + m_copydata(mb, 0, length, buffer); *numBytes = length; m_freem(mb); diff --git a/src/libs/compat/freebsd_network/fbsd_busdma_x86.c b/src/libs/compat/freebsd_network/fbsd_busdma_x86.c index cbb9e41ddb..90a6d09e2c 100644 --- a/src/libs/compat/freebsd_network/fbsd_busdma_x86.c +++ b/src/libs/compat/freebsd_network/fbsd_busdma_x86.c @@ -641,7 +641,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat, * Get the physical address for this segment. */ if (pmap) - curaddr = pmap_extract(pmap, vaddr); + curaddr = (bus_addr_t)pmap_extract(pmap, vaddr); else curaddr = pmap_kextract(vaddr);