From: Varun Prakash Date: Fri, 5 Apr 2019 15:09:13 +0000 (+0530) Subject: scsi: csiostor: fix missing data copy in csio_scsi_err_handler() X-Git-Tag: v5.1-rc5~4^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5c2442fd78998af60e13aba506d103f7f43f8701;p=users%2Fdwmw2%2Flinux.git scsi: csiostor: fix missing data copy in csio_scsi_err_handler() 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 Signed-off-by: Martin K. Petersen --- diff --git a/drivers/scsi/csiostor/csio_scsi.c b/drivers/scsi/csiostor/csio_scsi.c index 462560b2855e2..469d0bc9f5fe4 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);