forked from Minki/linux
[SCSI] be2iscsi: Fix scsi_cmnd leakage in driver.
scsi_cmnd n io_task was not NULL when - Link goes down while IO was happening and session is closed. - Task for which TMF was sent. Signed-off-by: John Soni Jose <sony.john-n@emulex.com> Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
9343be7490
commit
da3349771c
@ -1366,8 +1366,10 @@ be_complete_io(struct beiscsi_conn *beiscsi_conn,
|
||||
resid = csol_cqe->res_cnt;
|
||||
|
||||
if (!task->sc) {
|
||||
if (io_task->scsi_cmnd)
|
||||
if (io_task->scsi_cmnd) {
|
||||
scsi_dma_unmap(io_task->scsi_cmnd);
|
||||
io_task->scsi_cmnd = NULL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -1404,6 +1406,7 @@ be_complete_io(struct beiscsi_conn *beiscsi_conn,
|
||||
conn->rxdata_octets += resid;
|
||||
unmap:
|
||||
scsi_dma_unmap(io_task->scsi_cmnd);
|
||||
io_task->scsi_cmnd = NULL;
|
||||
iscsi_complete_scsi_task(task, exp_cmdsn, max_cmdsn);
|
||||
}
|
||||
|
||||
@ -4653,6 +4656,11 @@ static void beiscsi_cleanup_task(struct iscsi_task *task)
|
||||
spin_unlock(&phba->io_sgl_lock);
|
||||
io_task->psgl_handle = NULL;
|
||||
}
|
||||
|
||||
if (io_task->scsi_cmnd) {
|
||||
scsi_dma_unmap(io_task->scsi_cmnd);
|
||||
io_task->scsi_cmnd = NULL;
|
||||
}
|
||||
} else {
|
||||
if (!beiscsi_conn->login_in_progress)
|
||||
beiscsi_free_mgmt_task_handles(beiscsi_conn, task);
|
||||
|
Loading…
Reference in New Issue
Block a user