Commit 21698274 authored by Hao Xu's avatar Hao Xu Committed by Jens Axboe
Browse files

io-wq: fix lack of acct->nr_workers < acct->max_workers judgement



There should be this judgement before we create an io-worker

Fixes: 685fe7fe ("io-wq: eliminate the need for a manager thread")
Signed-off-by: default avatarHao Xu <haoxu@linux.alibaba.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 3d4e4fac
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -280,9 +280,17 @@ static void create_worker_cb(struct callback_head *cb)
{
	struct create_worker_data *cwd;
	struct io_wq *wq;
	struct io_wqe *wqe;
	struct io_wqe_acct *acct;

	cwd = container_of(cb, struct create_worker_data, work);
	wq = cwd->wqe->wq;
	wqe = cwd->wqe;
	wq = wqe->wq;
	acct = &wqe->acct[cwd->index];
	raw_spin_lock_irq(&wqe->lock);
	if (acct->nr_workers < acct->max_workers)
		acct->nr_workers++;
	raw_spin_unlock_irq(&wqe->lock);
	create_io_worker(wq, cwd->wqe, cwd->index);
	kfree(cwd);
}