IB/srp: Initialize dma_length in srp_map_idb
authorChristoph Hellwig <[email protected]>
Tue, 1 Dec 2015 18:18:30 +0000 (10:18 -0800)
committerDoug Ledford <[email protected]>
Mon, 7 Dec 2015 22:20:11 +0000 (17:20 -0500)
Without this sg_dma_len will return 0 on architectures tha have
the dma_length field.

Fixes: commit f7f7aab1a5c0 ("IB/srp: Convert to new registration API")
Signed-off-by: Christoph Hellwig <[email protected]>
Reviewed-by: Sagi Grimberg <[email protected]>
Signed-off-by: Doug Ledford <[email protected]>
drivers/infiniband/ulp/srp/ib_srp.c

index c7a95d2dc1646d482aa049c2fe6489b94cbc9243..72fac204d7562a28e245a816edf40b721695faa5 100644 (file)
@@ -1524,6 +1524,9 @@ static int srp_map_idb(struct srp_rdma_ch *ch, struct srp_request *req,
                state.sg_nents = 1;
                sg_set_buf(idb_sg, req->indirect_desc, idb_len);
                idb_sg->dma_address = req->indirect_dma_addr; /* hack! */
+#ifdef CONFIG_NEED_SG_DMA_LENGTH
+               idb_sg->dma_length = idb_sg->length;          /* hack^2 */
+#endif
                ret = srp_map_finish_fr(&state, ch);
                if (ret < 0)
                        return ret;