iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
[GitHub/exynos8895/android_kernel_samsung_universal8895.git] / drivers / target / iscsi / iscsi_target.c
index 7b42d12081e2bb212e8c39e6dec362a1c396d23b..31d5d9c0e10ba06d9c2da9a737d33a17e453e545 100644 (file)
@@ -4591,8 +4591,11 @@ static void iscsit_logout_post_handler_closesession(
         * always sleep waiting for RX/TX thread shutdown to complete
         * within iscsit_close_connection().
         */
-       if (conn->conn_transport->transport_type == ISCSI_TCP)
+       if (conn->conn_transport->transport_type == ISCSI_TCP) {
                sleep = cmpxchg(&conn->tx_thread_active, true, false);
+               if (!sleep)
+                       return;
+       }
 
        atomic_set(&conn->conn_logout_remove, 0);
        complete(&conn->conn_logout_comp);
@@ -4608,8 +4611,11 @@ static void iscsit_logout_post_handler_samecid(
 {
        int sleep = 1;
 
-       if (conn->conn_transport->transport_type == ISCSI_TCP)
+       if (conn->conn_transport->transport_type == ISCSI_TCP) {
                sleep = cmpxchg(&conn->tx_thread_active, true, false);
+               if (!sleep)
+                       return;
+       }
 
        atomic_set(&conn->conn_logout_remove, 0);
        complete(&conn->conn_logout_comp);