From: Nicholas Bellinger Date: Sat, 7 Sep 2013 03:46:50 +0000 (-0700) Subject: iscsi-target: Fix race with thread_pre_handler flush_signals + ISCSI_THREAD_SET_DIE X-Git-Tag: v3.12-rc1~23^2~7 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5705c4ab5035be618a34c95505727acac2e70ec;p=pandora-kernel.git iscsi-target: Fix race with thread_pre_handler flush_signals + ISCSI_THREAD_SET_DIE This patch addresses an long standing race in iscsi_[rx,tx]_thread_pre_handler() use of flush_signals(), and between iscsi_deallocate_extra_thread_sets() setting ISCSI_THREAD_SET_DIE before calling kthread_stop(). It addresses the issue by both holding ts_state_lock before calling send_sig() in iscsi_deallocate_extra_thread_sets(), as well as only calling flush_signals() when ts->status != ISCSI_THREAD_SET_DIE within iscsi_[rx,tx]_thread_pre_handler() code. v2 changes: - Add explicit complete(&ts->[rx,tx]_start_comp); before kthread_stop() in iscsi_deallocate_extra_thread_sets() - Drop left-over send_sig() calls in iscsi_deallocate_extra_thread_sets() - Add kthread_should_stop() check in iscsi_signal_thread_pre_handler() Signed-off-by: Nicholas Bellinger --- Reading git-diff-tree failed