Added thread pool exit condition into the thread_pool_del_worker(). If
called in parallel another thread can steal
Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
{
struct thread_pool_worker *w = NULL;
{
struct thread_pool_worker *w = NULL;
+ while (!w && p->thread_num) {
wait_event(p->wait, !list_empty(&p->ready_list) || !p->thread_num);
dprintk("%s: locking list_empty: %d, thread_num: %d.\n",
wait_event(p->wait, !list_empty(&p->ready_list) || !p->thread_num);
dprintk("%s: locking list_empty: %d, thread_num: %d.\n",