From: Jayamohan Kallickal Date: Sat, 8 Oct 2011 00:31:10 +0000 (-0500) Subject: [SCSI] be2iscsi: Fix for case where task->sc was cleanedup earlier X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=bd5354511d00cb9c81c64b0544786807a2209488;p=linux-beck.git [SCSI] be2iscsi: Fix for case where task->sc was cleanedup earlier This patch fixes a bug where the task->sc was cleaned up earlier on a different thread, possibly abort, and the completion comes later. This was causing a crash which has been reported in multiple places Signed-off-by: Jayamohan Kallickal Signed-off-by: Mike Christie Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index e166d547a341..7b0a8ab71049 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c @@ -1123,7 +1123,12 @@ be_complete_io(struct beiscsi_conn *beiscsi_conn, & SOL_STS_MASK) >> 8); flags = ((psol->dw[offsetof(struct amap_sol_cqe, i_flags) / 32] & SOL_FLAGS_MASK) >> 24) | 0x80; + if (!task->sc) { + if (io_task->scsi_cmnd) + scsi_dma_unmap(io_task->scsi_cmnd); + return; + } task->sc->result = (DID_OK << 16) | status; if (rsp != ISCSI_STATUS_CMD_COMPLETED) { task->sc->result = DID_ERROR << 16;