linux/drivers/target/iscsi
Nicholas Bellinger ca82c2bded iscsi-target: Fix rx_login_comp hang after login failure
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>
2015-11-28 19:33:08 -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
iscsi_target.c iscsi-target: Fix rx_login_comp hang after login failure 2015-11-28 19:33:08 -08:00
iscsi_target.h target/iscsi: Replace __kernel_sockaddr_storage with sockaddr_storage 2015-08-26 23:27:25 -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: use per-attribute show and store methods 2015-10-13 22:17:49 -07: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_device.c target: Fix max_cmd_sn increment w/o cmdsn mutex regressions 2015-09-11 00:32:28 -07:00
iscsi_target_device.h target/iscsi: Remove unneeded wrapper functions 2012-02-25 14:37:47 -08:00
iscsi_target_erl0.c iscsi-target: remove support for obsolete markers 2015-05-30 22:41:43 -07:00
iscsi_target_erl0.h iscsi-target: remove support for obsolete markers 2015-05-30 22:41:43 -07: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 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2015-09-11 19:00:42 -07:00
iscsi_target_login.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2015-09-11 19:00:42 -07:00
iscsi_target_nego.c iscsi-target: Fix rx_login_comp hang after login failure 2015-11-28 19:33:08 -08: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: return -ENOMEM instead of -1 in case of failed kmalloc() 2015-11-28 19:32:59 -08:00
iscsi_target_parameters.h iscsi-target: remove support for obsolete markers 2015-05-30 22:41:43 -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 target: use per-attribute show and store methods 2015-10-13 22:17:49 -07:00
iscsi_target_tmr.c target: Drop iSCSI use of mutex around max_cmd_sn increment 2015-08-02 23:11:52 -07:00
iscsi_target_tmr.h
iscsi_target_tpg.c target/iscsi: Replace __kernel_sockaddr_storage with sockaddr_storage 2015-08-26 23:27:25 -07:00
iscsi_target_tpg.h target/iscsi: Replace __kernel_sockaddr_storage with sockaddr_storage 2015-08-26 23:27:25 -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/iscsi: Replace conn->login_ip with login_sockaddr 2015-08-26 23:27:20 -07:00
iscsi_target_util.h iscsi-target: remove support for obsolete markers 2015-05-30 22:41:43 -07:00