IB/srp: Initialize dma_length in srp_map_idb
authorChristoph Hellwig <hch@lst.de>
Tue, 1 Dec 2015 18:18:30 +0000 (10:18 -0800)
committerDoug Ledford <dledford@redhat.com>
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 <hch@lst.de>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
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;