Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da334977 authored by Jayamohan Kallickal's avatar Jayamohan Kallickal Committed by James Bottomley
Browse files

[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: default avatarJohn Soni Jose <sony.john-n@emulex.com>
Signed-off-by: default avatarJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 9343be74
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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);