iser-target: Add missing target_put_sess_cmd for ImmedateData failure
authorNicholas Bellinger <nab@linux-iscsi.org>
Fri, 23 May 2014 07:48:35 +0000 (00:48 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 4 Jun 2014 02:17:31 +0000 (19:17 -0700)
commit6cc44a6fb46e1ecc1c28125aa8fa34d317aa9ea7
tree03de13aad1a6bdc70bbe85508fd252a879bd97d3
parent1e1110c43b1cda9fe77fc4a04835e460550e6b3c
iser-target: Add missing target_put_sess_cmd for ImmedateData failure

This patch addresses a bug where an early exception for SCSI WRITE
with ImmediateData=Yes was missing the target_put_sess_cmd() call
to drop the extra se_cmd->cmd_kref reference obtained during the
normal iscsit_setup_scsi_cmd() codepath execution.

This bug was manifesting itself during session shutdown within
isert_cq_rx_comp_err() where target_wait_for_sess_cmds() would
end up waiting indefinately for the last se_cmd->cmd_kref put to
occur for the failed SCSI WRITE + ImmediateData descriptors.

This fix follows what traditional iscsi-target code already does
for the same failure case within iscsit_get_immediate_data().

Reported-by: Sagi Grimberg <sagig@dev.mellanox.co.il>
Cc: Sagi Grimberg <sagig@dev.mellanox.co.il>
Cc: Or Gerlitz <ogerlitz@mellanox.com>
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/infiniband/ulp/isert/ib_isert.c