ib_srpt: Use correct ib_sg_dma primitives
Subsystems (2)
PATCH 1/1 ib_srpt: Use correct ib_sg_dma primitives
The code was incorrectly using sg_dma_address() and sg_dma_len() instead of ib_sg_dma_address() and ib_sg_dma_len().
This prevents srpt from functioning with the
Intel HCA and indeed will corrupt memory
badly.
Cc <[email protected]>
Cc Bart Van Assche <[email protected]>
Reviewed-by Dennis Dalessandro <[email protected]>
Tested-by Vinod Kumar <[email protected]>
Signed-off-by Mike Marciniszyn <[email protected]>
--- drivers/infiniband/ulp/srpt/ib_srpt.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
drivers/infiniband/ulp/srpt/ib_srpt.c +10 -6
@@ -1078,6 +1078,7 @@ static void srpt_unmap_sg_to_ib_sge(struct srpt_rdma_ch *ch,static int srpt_map_sg_to_ib_sge (struct srpt_rdma_ch *ch,struct srpt_send_ioctx *ioctx) { +struct ib_device *dev = ch->sport->sdev->device;struct se_cmd *cmd;struct scatterlist *sg, *sg_orig;int sg_cnt;
@@ -1124,7 +1125,7 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, db = ioctx->rbufs; tsize = cmd->data_length; - dma_len =sg_dma_len (&sg[0 ]); + dma_len =ib_sg_dma_len (dev, &sg[0 ]); riu = ioctx->rdma_ius;/*
@@ -1155,7 +1156,8 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, ++j;if (j < count) { sg =sg_next (sg); - dma_len =sg_dma_len (sg); + dma_len =ib_sg_dma_len ( + dev, sg); } } }else {
@@ -1192,8 +1194,8 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, tsize = cmd->data_length; riu = ioctx->rdma_ius; sg = sg_orig; - dma_len =sg_dma_len (&sg[0 ]); - dma_addr =sg_dma_address (&sg[0 ]); + dma_len =ib_sg_dma_len (dev, &sg[0 ]); + dma_addr =ib_sg_dma_address (dev, &sg[0 ]);/* this second loop is really mapped sg_addres to rdma_iu->ib_sge */ for (i = 0, j = 0;
@@ -1216,8 +1218,10 @@ static int srpt_map_sg_to_ib_sge(struct srpt_rdma_ch *ch, ++j;if (j < count) { sg =sg_next (sg); - dma_len =sg_dma_len (sg); - dma_addr =sg_dma_address (sg); + dma_len =ib_sg_dma_len ( + dev, sg); + dma_addr =ib_sg_dma_address ( + dev, sg); } } }else {