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

Commit 77039d1e authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

target: Fix transport_cmd_finish_abort queue removal bug



This patch fixes a bug in LUN_RESET operation with transport_cmd_finish_abort()
where transport_remove_cmd_from_queue() was incorrectly being called, causing
descriptors with t_state == TRANSPORT_FREE_CMD_INTR to be incorrectly removed
from qobj->qobj_list during process context release.  This change ensures the
descriptor is only removed via transport_remove_cmd_from_queue() when doing a
direct release via transport_generic_remove().

Cc: stable@kernel.org
Signed-off-by: default avatarNicholas Bellinger <nab@risingtidesystems.com>
parent b0e062ae
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -593,14 +593,15 @@ check_lun:

void transport_cmd_finish_abort(struct se_cmd *cmd, int remove)
{
	transport_remove_cmd_from_queue(cmd, &cmd->se_dev->dev_queue_obj);
	transport_lun_remove_cmd(cmd);

	if (transport_cmd_check_stop_to_fabric(cmd))
		return;
	if (remove)
	if (remove) {
		transport_remove_cmd_from_queue(cmd, &cmd->se_dev->dev_queue_obj);
		transport_generic_remove(cmd, 0);
	}
}

void transport_cmd_finish_abort_tmr(struct se_cmd *cmd)
{