2007-10-17 08:04:18

by FUJITA Tomonori

[permalink] [raw]
Subject: [PATCH] swiotlb: fix map_sg failure handling

sg list elements might not be continuous.

Signed-off-by: FUJITA Tomonori <[email protected]>
---
lib/swiotlb.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index c419ecf..752fd95 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -696,7 +696,7 @@ swiotlb_map_sg(struct device *hwdev, struct scatterlist *sgl, int nelems,
/* Don't panic here, we expect map_sg users
to do proper error handling. */
swiotlb_full(hwdev, sg->length, dir, 0);
- swiotlb_unmap_sg(hwdev, sg - i, i, dir);
+ swiotlb_unmap_sg(hwdev, sgl, i, dir);
sgl[0].dma_length = 0;
return 0;
}
--
1.5.2.4


2007-10-17 08:06:20

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] swiotlb: fix map_sg failure handling

On Wed, Oct 17 2007, FUJITA Tomonori wrote:
> sg list elements might not be continuous.
>
> Signed-off-by: FUJITA Tomonori <[email protected]>
> ---
> lib/swiotlb.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index c419ecf..752fd95 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -696,7 +696,7 @@ swiotlb_map_sg(struct device *hwdev, struct scatterlist *sgl, int nelems,
> /* Don't panic here, we expect map_sg users
> to do proper error handling. */
> swiotlb_full(hwdev, sg->length, dir, 0);
> - swiotlb_unmap_sg(hwdev, sg - i, i, dir);
> + swiotlb_unmap_sg(hwdev, sgl, i, dir);
> sgl[0].dma_length = 0;
> return 0;
> }

Auch indeed, no math on sg entries! Applied.

--
Jens Axboe