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)
committerJiri Slaby <jslaby@suse.cz>
Fri, 20 Jun 2014 15:34:12 +0000 (17:34 +0200)
commita12e3e7bfc80023f8ef4ab17eebeb0e344494036
treea25af429b6b46d7d782a7ebf7e615622e599e668
parent3e1b305b53c104d93e1f5d4ac1e682bdf31bb139
iser-target: Add missing target_put_sess_cmd for ImmedateData failure

commit 6cc44a6fb46e1ecc1c28125aa8fa34d317aa9ea7 upstream.

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>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/infiniband/ulp/isert/ib_isert.c