From: FUJITA Tomonori Date: Thu, 25 Oct 2007 07:13:32 +0000 (+0200) Subject: x86: pci-gart fix X-Git-Tag: v2.6.24-rc2~141^2~2 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=e88a39dee10d3a506ed8c4ba78cde0dd76a6fc83;p=~emulex%2Finfiniband.git x86: pci-gart fix map_sg could copy the last sg element to another position (if merging some elements). It breaks sg chaining. This copies only dma_address/length instead of the whole sg element. Signed-off-by: FUJITA Tomonori Signed-off-by: Jens Axboe --- diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index c56e9ee6496..ae7e0161ce4 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c @@ -338,7 +338,6 @@ static int __dma_map_cont(struct scatterlist *start, int nelems, BUG_ON(s != start && s->offset); if (s == start) { - *sout = *s; sout->dma_address = iommu_bus_base; sout->dma_address += iommu_page*PAGE_SIZE + s->offset; sout->dma_length = s->length; @@ -365,7 +364,7 @@ static inline int dma_map_cont(struct scatterlist *start, int nelems, { if (!need) { BUG_ON(nelems != 1); - *sout = *start; + sout->dma_address = start->dma_address; sout->dma_length = start->length; return 0; }