linux/drivers/target/iscsi
Nicholas Bellinger 4b4bc57ac1 iscsi-target: Fix rx_login_comp hang after login failure
[ Upstream commit ca82c2bded ]

This patch addresses a case where iscsi_target_do_tx_login_io()
fails sending the last login response PDU, after the RX/TX
threads have already been started.

The case centers around iscsi_target_rx_thread() not invoking
allow_signal(SIGINT) before the send_sig(SIGINT, ...) occurs
from the failure path, resulting in RX thread hanging
indefinately on iscsi_conn->rx_login_comp.

Note this bug is a regression introduced by:

  commit e54198657b
  Author: Nicholas Bellinger <nab@linux-iscsi.org>
  Date:   Wed Jul 22 23:14:19 2015 -0700

      iscsi-target: Fix iscsit_start_kthreads failure OOPs

To address this bug, complete ->rx_login_complete for good
measure in the failure path, and immediately return from
RX thread context if connection state did not actually reach
full feature phase (TARG_CONN_STATE_LOGGED_IN).

Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: <stable@vger.kernel.org> # v3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2016-03-05 22:11:40 -05:00
..
iscsi_target.c iscsi-target: Fix rx_login_comp hang after login failure 2016-03-05 22:11:40 -05:00
iscsi_target.h target/iscsi: Fix np_ip bracket issue by removing np_ip 2015-10-22 14:43:11 -07:00
iscsi_target_auth.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_auth.h iscsi-target: Fix CHAP_A parameter list handling 2014-06-05 19:44:02 -07:00
iscsi_target_configfs.c target: Remove first argument of target_{get,put}_sess_cmd() 2016-02-28 00:09:36 -05:00
iscsi_target_datain_values.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_datain_values.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_device.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_device.h target/iscsi: Remove unneeded wrapper functions 2012-02-25 14:37:47 -08:00
iscsi_target_erl0.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2015-04-24 10:22:09 -07:00
iscsi_target_erl0.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_erl1.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_erl1.h iscsit: use the itt_t abstract type 2012-10-03 14:21:50 -07:00
iscsi_target_erl2.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_erl2.h iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_login.c target/iscsi: Fix np_ip bracket issue by removing np_ip 2015-10-22 14:43:11 -07:00
iscsi_target_login.h iscsi-target: Fix iscsit_start_kthreads failure OOPs 2015-08-10 12:21:58 -07:00
iscsi_target_nego.c iscsi-target: Fix rx_login_comp hang after login failure 2016-03-05 22:11:40 -05:00
iscsi_target_nego.h iscsi-target: Initial traditional TCP conversion to iscsit_transport 2013-04-25 01:05:26 -07:00
iscsi_target_nodeattrib.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_nodeattrib.h iscsi-target: Expose default_erl as TPG attribute 2013-11-20 11:57:18 -08:00
iscsi_target_parameters.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_parameters.h iscsi-target: fix heap buffer overflow on error 2013-05-30 18:07:54 -07:00
iscsi_target_seq_pdu_list.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_seq_pdu_list.h target/iscsi: Fold _decide_list_to_build into _build_pdu_and_seq_lists 2012-04-14 17:40:38 -07:00
iscsi_target_stat.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_tmr.c iscsi-target: Move iscsi_target_[core,stat].h under linux include 2015-01-30 13:06:21 -08:00
iscsi_target_tmr.h iscsi-target: Add iSCSI fabric support for target v4.1 2011-07-26 09:16:43 +00:00
iscsi_target_tpg.c target/iscsi: Fix np_ip bracket issue by removing np_ip 2015-10-22 14:43:11 -07:00
iscsi_target_tpg.h target/iscsi: Fix np_ip bracket issue by removing np_ip 2015-10-22 14:43:11 -07:00
iscsi_target_transport.c target: Deletion of unnecessary checks before the function call "module_put" 2014-12-01 21:35:21 -08:00
iscsi_target_util.c target: Remove first argument of target_{get,put}_sess_cmd() 2016-02-28 00:09:36 -05:00
iscsi_target_util.h iscsi/iser-target: Support multi-sequence sendtargets text response 2015-02-12 11:24:29 -08:00
Kconfig target: iscsi_target depends on NET 2011-07-28 20:16:18 +00:00
Makefile iscsi-target: Drop legacy iscsi_target_tq.c logic 2015-03-26 14:49:49 -07:00