From: Eldad Zinger Date: Mon, 25 Oct 2010 13:02:43 +0000 (+0200) Subject: sdp: add a sanity check for sg_len X-Git-Tag: v4.1.12-92~264^2~5^2~69 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d4f1e728b1584e1dfbe37a5f15abd7f200848932;p=users%2Fjedix%2Flinux-maple.git sdp: add a sanity check for sg_len Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_zcopy.c b/drivers/infiniband/ulp/sdp/sdp_zcopy.c index cc1a40c9be587..8960ec84f2ab7 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;