]> git.baikalelectronics.ru Git - kernel.git/commit
iscsi-target: Fix iscsit_start_kthreads failure OOPs
authorNicholas Bellinger <nab@linux-iscsi.org>
Thu, 23 Jul 2015 06:14:19 +0000 (23:14 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 24 Jul 2015 21:19:43 +0000 (14:19 -0700)
commite392ea22c2958e63808996e9426f93200df4905d
treecd51f1a28f009c7f4ed97152a6a9ee245bd64d5d
parent81d9c2092e9e9483e19b124ae85b2bccfb7795d0
iscsi-target: Fix iscsit_start_kthreads failure OOPs

This patch fixes a regression introduced with the following commit
in v4.0-rc1 code, where a iscsit_start_kthreads() failure triggers
a NULL pointer dereference OOPs:

    commit 12bd312c61e162119dc9e7d3a379d346cbec23ef
    Author: Nicholas Bellinger <nab@linux-iscsi.org>
    Date:   Thu Feb 26 22:19:15 2015 -0800

        iscsi-target: Convert iscsi_thread_set usage to kthread.h

To address this bug, move iscsit_start_kthreads() immediately
preceeding the transmit of last login response, before signaling
a successful transition into full-feature-phase within existing
iscsi_target_do_tx_login_io() logic.

This ensures that no target-side resource allocation failures can
occur after the final login response has been successfully sent.

Also, it adds a iscsi_conn->rx_login_comp to allow the RX thread
to sleep to prevent other socket related failures until the final
iscsi_post_login_handler() call is able to complete.

Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: <stable@vger.kernel.org> # v3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_login.c
drivers/target/iscsi/iscsi_target_login.h
drivers/target/iscsi/iscsi_target_nego.c
include/target/iscsi/iscsi_target_core.h