xprtrdma: Do not truncate iova_start values in frmr registrations.
authorSteve Wise <swise@opengridcomputing.com>
Wed, 11 Aug 2010 16:47:08 +0000 (12:47 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 11 Aug 2010 16:47:08 +0000 (12:47 -0400)
A bad cast causes the iova_start, which in this case is a 64b DMA
bus address, to be truncated on 32b systems.  This breaks frmrs on
32b systems.  No cast is needed.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
net/sunrpc/xprtrdma/verbs.c

index 27015c6d8eb58311ed88264e86313fc3879ad0c2..3bdbd9f3b88f9d9b593bf60dfed8affcca126bcc 100644 (file)
@@ -1490,7 +1490,7 @@ rpcrdma_register_frmr_external(struct rpcrdma_mr_seg *seg,
        memset(&frmr_wr, 0, sizeof frmr_wr);
        frmr_wr.opcode = IB_WR_FAST_REG_MR;
        frmr_wr.send_flags = 0;                 /* unsignaled */
-       frmr_wr.wr.fast_reg.iova_start = (unsigned long)seg1->mr_dma;
+       frmr_wr.wr.fast_reg.iova_start = seg1->mr_dma;
        frmr_wr.wr.fast_reg.page_list = seg1->mr_chunk.rl_mw->r.frmr.fr_pgl;
        frmr_wr.wr.fast_reg.page_list_len = i;
        frmr_wr.wr.fast_reg.page_shift = PAGE_SHIFT;