From df676be3eb50d3aa4ba1e0cc5d661724bc99973d Mon Sep 17 00:00:00 2001 From: nwhitehorn Date: Tue, 17 Sep 2013 17:29:07 +0000 Subject: [PATCH] Make sure to copy segments back to the segs array if non-NULL. This is relied upon by bus_dmamap_load_mbuf_sg() (i.e. all network drivers). Approved by: re (kib) MFC after: 2 weeks --- sys/powerpc/powerpc/busdma_machdep.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c index 951a76a22799..144b7f9b7300 100644 --- a/sys/powerpc/powerpc/busdma_machdep.c +++ b/sys/powerpc/powerpc/busdma_machdep.c @@ -847,13 +847,16 @@ _bus_dmamap_complete(bus_dma_tag_t dmat, bus_dmamap_t map, map->nsegs = nsegs; if (segs != NULL) memcpy(map->segments, segs, map->nsegs*sizeof(segs[0])); - else - segs = map->segments; if (dmat->iommu != NULL) IOMMU_MAP(dmat->iommu, map->segments, &map->nsegs, dmat->lowaddr, dmat->highaddr, dmat->alignment, dmat->boundary, dmat->iommu_cookie); + if (segs != NULL) + memcpy(segs, map->segments, map->nsegs*sizeof(segs[0])); + else + segs = map->segments; + return (segs); }