diff --git a/scst/src/scst_main.c b/scst/src/scst_main.c index bf4d6c24a..b730723de 100644 --- a/scst/src/scst_main.c +++ b/scst/src/scst_main.c @@ -1950,6 +1950,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; @@ -1964,10 +1965,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); }