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

Commit 42a70abd authored by Dupuis, Chad's avatar Dupuis, Chad Committed by Martin K. Petersen
Browse files

scsi: qedi: Fix memory leak in tmf response processing.

parent fbdab3e7
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -165,10 +165,9 @@ static void qedi_tmf_resp_work(struct work_struct *work)
	iscsi_block_session(session->cls_session);
	iscsi_block_session(session->cls_session);
	rval = qedi_cleanup_all_io(qedi, qedi_conn, qedi_cmd->task, true);
	rval = qedi_cleanup_all_io(qedi, qedi_conn, qedi_cmd->task, true);
	if (rval) {
	if (rval) {
		clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags);
		qedi_clear_task_idx(qedi, qedi_cmd->task_id);
		qedi_clear_task_idx(qedi, qedi_cmd->task_id);
		iscsi_unblock_session(session->cls_session);
		iscsi_unblock_session(session->cls_session);
		return;
		goto exit_tmf_resp;
	}
	}


	iscsi_unblock_session(session->cls_session);
	iscsi_unblock_session(session->cls_session);
@@ -177,6 +176,8 @@ static void qedi_tmf_resp_work(struct work_struct *work)
	spin_lock(&session->back_lock);
	spin_lock(&session->back_lock);
	__iscsi_complete_pdu(conn, (struct iscsi_hdr *)resp_hdr_ptr, NULL, 0);
	__iscsi_complete_pdu(conn, (struct iscsi_hdr *)resp_hdr_ptr, NULL, 0);
	spin_unlock(&session->back_lock);
	spin_unlock(&session->back_lock);

exit_tmf_resp:
	kfree(resp_hdr_ptr);
	kfree(resp_hdr_ptr);
	clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags);
	clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags);
}
}