|
@@ -1216,7 +1216,7 @@ old_sess_out:
|
|
|
static int __iscsi_target_login_thread(struct iscsi_np *np)
|
|
|
{
|
|
|
u8 *buffer, zero_tsih = 0;
|
|
|
- int ret = 0, rc, stop;
|
|
|
+ int ret = 0, rc;
|
|
|
struct iscsi_conn *conn = NULL;
|
|
|
struct iscsi_login *login;
|
|
|
struct iscsi_portal_group *tpg = NULL;
|
|
@@ -1230,6 +1230,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
|
|
|
if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
|
|
|
np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
|
|
|
complete(&np->np_restart_comp);
|
|
|
+ } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) {
|
|
|
+ spin_unlock_bh(&np->np_thread_lock);
|
|
|
+ goto exit;
|
|
|
} else {
|
|
|
np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
|
|
|
}
|
|
@@ -1422,10 +1425,8 @@ old_sess_out:
|
|
|
}
|
|
|
|
|
|
out:
|
|
|
- stop = kthread_should_stop();
|
|
|
- /* Wait for another socket.. */
|
|
|
- if (!stop)
|
|
|
- return 1;
|
|
|
+ return 1;
|
|
|
+
|
|
|
exit:
|
|
|
iscsi_stop_login_thread_timer(np);
|
|
|
spin_lock_bh(&np->np_thread_lock);
|
|
@@ -1442,7 +1443,7 @@ int iscsi_target_login_thread(void *arg)
|
|
|
|
|
|
allow_signal(SIGINT);
|
|
|
|
|
|
- while (!kthread_should_stop()) {
|
|
|
+ while (1) {
|
|
|
ret = __iscsi_target_login_thread(np);
|
|
|
/*
|
|
|
* We break and exit here unless another sock_accept() call
|