diff --git a/scst/src/scst_main.c b/scst/src/scst_main.c index 34f921728..06f9e6255 100644 --- a/scst/src/scst_main.c +++ b/scst/src/scst_main.c @@ -1958,6 +1958,7 @@ void scst_del_threads(struct scst_cmd_threads *cmd_threads, int num) thread_list_entry) { if (!ct2->being_stopped) { ct = ct2; + list_del(&ct->thread_list_entry); ct->being_stopped = true; cmd_threads->nr_threads--; break; @@ -1972,10 +1973,6 @@ void scst_del_threads(struct scst_cmd_threads *cmd_threads, int num) if (rc != 0 && rc != -EINTR) TRACE_MGMT_DBG("kthread_stop() failed: %d", rc); - spin_lock(&cmd_threads->thr_lock); - list_del(&ct->thread_list_entry); - spin_unlock(&cmd_threads->thr_lock); - kfree(ct); }