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

Commit 96809f1b authored by Mike Christie's avatar Mike Christie Committed by James Bottomley
Browse files

[SCSI] libiscsi: fix null ptr regression when aborting a command with data to transfer



We do not want to send data if we are aborting a task. There is
a check in iscsi_xmit_ctask, but right before calling this we overwrite
the state so we always go right past the test. Sending data causes problems
because when we clean up from a successful abort the LLD assumes that
the task is not running.

Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 604cd794
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -737,12 +737,19 @@ check_mgmt:
		 */
		conn->ctask = list_entry(conn->xmitqueue.next,
					 struct iscsi_cmd_task, running);
		if (conn->ctask->state == ISCSI_TASK_PENDING) {
		switch (conn->ctask->state) {
		case ISCSI_TASK_ABORTING:
			break;
		case ISCSI_TASK_PENDING:
			iscsi_prep_scsi_cmd_pdu(conn->ctask);
			conn->session->tt->init_cmd_task(conn->ctask);
		}
			/* fall through */
		default:
			conn->ctask->state = ISCSI_TASK_RUNNING;
			break;
		}
		list_move_tail(conn->xmitqueue.next, &conn->run_list);

		rc = iscsi_xmit_ctask(conn);
		if (rc)
			goto again;