Skip to content
/ linux Public
forked from torvalds/linux

Commit

Permalink
IB/iser: Fix error flow in case of registration failure
Browse files Browse the repository at this point in the history
During READ/WRITE preparation, in case of failure in memory registration
using iser_reg_mem_fastreg we must unmap previously mapped iser task.

Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Sergey Gorenko <[email protected]>
Signed-off-by: Max Gurtovoy <[email protected]>
Acked-by: Sagi Grimberg <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
  • Loading branch information
mgurtovoy authored and jgunthorpe committed Mar 18, 2022
1 parent 80303ee commit 2e11a5e
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions drivers/infiniband/ulp/iser/iser_initiator.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ static int iser_prepare_read_cmd(struct iscsi_task *task)
err = iser_reg_mem_fastreg(iser_task, ISER_DIR_IN, false);
if (err) {
iser_err("Failed to set up Data-IN RDMA\n");
return err;
goto out_err;
}
mem_reg = &iser_task->rdma_reg[ISER_DIR_IN];

Expand All @@ -75,6 +75,10 @@ static int iser_prepare_read_cmd(struct iscsi_task *task)
(unsigned long long)mem_reg->sge.addr);

return 0;

out_err:
iser_dma_unmap_task_data(iser_task, ISER_DIR_IN, DMA_FROM_DEVICE);
return err;
}

/* Register user buffer memory and initialize passive rdma
Expand All @@ -100,9 +104,9 @@ static int iser_prepare_write_cmd(struct iscsi_task *task, unsigned int imm_sz,

err = iser_reg_mem_fastreg(iser_task, ISER_DIR_OUT,
buf_out->data_len == imm_sz);
if (err != 0) {
if (err) {
iser_err("Failed to register write cmd RDMA mem\n");
return err;
goto out_err;
}

mem_reg = &iser_task->rdma_reg[ISER_DIR_OUT];
Expand All @@ -129,6 +133,10 @@ static int iser_prepare_write_cmd(struct iscsi_task *task, unsigned int imm_sz,
}

return 0;

out_err:
iser_dma_unmap_task_data(iser_task, ISER_DIR_OUT, DMA_TO_DEVICE);
return err;
}

/* creates a new tx descriptor and adds header regd buffer */
Expand Down

0 comments on commit 2e11a5e

Please sign in to comment.