-
- Downloads
iscsi-target: Always wait for kthread_should_stop() before kthread exit
There are three timing problems in the kthread usages of iscsi_target_mod: - np_thread of struct iscsi_np - rx_thread and tx_thread of struct iscsi_conn In iscsit_close_connection(), it calls send_sig(SIGINT, conn->tx_thread, 1); kthread_stop(conn->tx_thread); In conn->tx_thread, which is iscsi_target_tx_thread(), when it receive SIGINT the kthread will exit without checking the return value of kthread_should_stop(). So if iscsi_target_tx_thread() exit right between send_sig(SIGINT...) and kthread_stop(...), the kthread_stop() will try to stop an already stopped kthread. This is invalid according to the documentation of kthread_stop(). (Fix -ECONNRESET logout handling in iscsi_target_tx_thread and early iscsi_target_rx_thread failure case - nab) Signed-off-by:Jiang Yi <jiangyilism@gmail.com> Cc: <stable@vger.kernel.org> # v3.12+ Signed-off-by:
Nicholas Bellinger <nab@linux-iscsi.org>
Showing
- drivers/target/iscsi/iscsi_target.c 24 additions, 6 deletionsdrivers/target/iscsi/iscsi_target.c
- drivers/target/iscsi/iscsi_target_erl0.c 5 additions, 1 deletiondrivers/target/iscsi/iscsi_target_erl0.c
- drivers/target/iscsi/iscsi_target_erl0.h 1 addition, 1 deletiondrivers/target/iscsi/iscsi_target_erl0.h
- drivers/target/iscsi/iscsi_target_login.c 4 additions, 0 deletionsdrivers/target/iscsi/iscsi_target_login.c
Loading
Please register or sign in to comment