Commit bdb02504 authored by FUJITA Tomonori's avatar FUJITA Tomonori Committed by Jens Axboe

IA64: iommu uses sg_next with an invalid sg element

sg list elements might not be continuous.
Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 8bf50f71
...@@ -1179,7 +1179,6 @@ sba_fill_pdir( ...@@ -1179,7 +1179,6 @@ sba_fill_pdir(
u64 *pdirp = NULL; u64 *pdirp = NULL;
unsigned long dma_offset = 0; unsigned long dma_offset = 0;
dma_sg--;
while (nents-- > 0) { while (nents-- > 0) {
int cnt = startsg->dma_length; int cnt = startsg->dma_length;
startsg->dma_length = 0; startsg->dma_length = 0;
...@@ -1201,7 +1200,8 @@ sba_fill_pdir( ...@@ -1201,7 +1200,8 @@ sba_fill_pdir(
u32 pide = startsg->dma_address & ~PIDE_FLAG; u32 pide = startsg->dma_address & ~PIDE_FLAG;
dma_offset = (unsigned long) pide & ~iovp_mask; dma_offset = (unsigned long) pide & ~iovp_mask;
startsg->dma_address = 0; startsg->dma_address = 0;
dma_sg = sg_next(dma_sg); if (n_mappings)
dma_sg = sg_next(dma_sg);
dma_sg->dma_address = pide | ioc->ibase; dma_sg->dma_address = pide | ioc->ibase;
pdirp = &(ioc->pdir_base[pide >> iovp_shift]); pdirp = &(ioc->pdir_base[pide >> iovp_shift]);
n_mappings++; n_mappings++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment