]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit - drivers/target/target_core_transport.c
target: Fix quiese during transport_write_pending_qf endless loop
authorNicholas Bellinger <nab@linux-iscsi.org>
Fri, 29 Sep 2017 23:43:11 +0000 (16:43 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 8 Nov 2017 03:45:28 +0000 (19:45 -0800)
commit9574a497df2bbc0a676b609ce0dd24d237cee3a6
tree73459de4d7ed7b76647ee6b4c2dc896c2f1c8941
parentfd2f928b0ddd2fe8876d4f1344df2ace2b715a4d
target: Fix quiese during transport_write_pending_qf endless loop

This patch fixes a potential end-less loop during QUEUE_FULL,
where cmd->se_tfo->write_pending() callback fails repeatedly
but __transport_wait_for_tasks() has already been invoked to
quiese the outstanding se_cmd descriptor.

To address this bug, this patch adds a CMD_T_STOP|CMD_T_ABORTED
check within transport_write_pending_qf() and invokes the
existing se_cmd->t_transport_stop_comp to signal quiese
completion back to __transport_wait_for_tasks().

Cc: Mike Christie <mchristi@redhat.com>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
Cc: Michael Cyr <mikecyr@linux.vnet.ibm.com>
Cc: Potnuri Bharat Teja <bharat@chelsio.com>
Cc: Sagi Grimberg <sagi@grimberg.me>
Cc: stable@vger.kernel.org # 4.11+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c