diff mbox series

scsi: csiostor: fix missing data copy in csio_scsi_err_handler()

Message ID 1554476953-4350-1-git-send-email-varun@chelsio.com (mailing list archive)
State Mainlined
Commit 5c2442fd78998af60e13aba506d103f7f43f8701
Headers show
Series scsi: csiostor: fix missing data copy in csio_scsi_err_handler() | expand

Commit Message

Varun Prakash April 5, 2019, 3:09 p.m. UTC
If scsi cmd sglist is not suitable for DDP then csiostor
driver uses preallocated buffers for DDP, because of this
data copy is required from DDP buffer to scsi cmd sglist
before calling ->scsi_done().

Signed-off-by: Varun Prakash <varun@chelsio.com>
---
 drivers/scsi/csiostor/csio_scsi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Martin K. Petersen April 9, 2019, 2:20 a.m. UTC | #1
Varun,

> If scsi cmd sglist is not suitable for DDP then csiostor driver uses
> preallocated buffers for DDP, because of this data copy is required
> from DDP buffer to scsi cmd sglist before calling ->scsi_done().

Applied to 5.1/scsi-fixes, thanks!
diff mbox series

Patch

diff --git a/drivers/scsi/csiostor/csio_scsi.c b/drivers/scsi/csiostor/csio_scsi.c
index 462560b2855e..469d0bc9f5fe 100644
--- a/drivers/scsi/csiostor/csio_scsi.c
+++ b/drivers/scsi/csiostor/csio_scsi.c
@@ -1713,8 +1713,11 @@  csio_scsi_err_handler(struct csio_hw *hw, struct csio_ioreq *req)
 	}
 
 out:
-	if (req->nsge > 0)
+	if (req->nsge > 0) {
 		scsi_dma_unmap(cmnd);
+		if (req->dcopy && (host_status == DID_OK))
+			host_status = csio_scsi_copy_to_sgl(hw, req);
+	}
 
 	cmnd->result = (((host_status) << 16) | scsi_status);
 	cmnd->scsi_done(cmnd);