From d4f1e728b1584e1dfbe37a5f15abd7f200848932 Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Mon, 25 Oct 2010 15:02:43 +0200 Subject: [PATCH] sdp: add a sanity check for sg_len Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_zcopy.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_zcopy.c b/drivers/infiniband/ulp/sdp/sdp_zcopy.c index cc1a40c9be58..8960ec84f2ab 100644 --- a/drivers/infiniband/ulp/sdp/sdp_zcopy.c +++ b/drivers/infiniband/ulp/sdp/sdp_zcopy.c @@ -466,10 +466,14 @@ static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len, list_for_each_entry(chunk, &umem->chunk_list, list) { for (j = 0; j < chunk->nmap; ++j) { - len = ib_sg_dma_len(dev, + unsigned len2; + len2 = ib_sg_dma_len(dev, &chunk->page_list[j]) >> PAGE_SHIFT; + + SDP_WARN_ON(len2 > len); + len -= len2; - for (k = 0; k < len; ++k) { + for (k = 0; k < len2; ++k) { pages[n++] = ib_sg_dma_address(dev, &chunk->page_list[j]) + umem->page_size * k; -- 2.50.1