Simply move it to pool->lock C.S. Signed-off-by: Lai Jiangshan <la...@cn.fujitsu.com> --- kernel/workqueue.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 21ef721..0c692d4 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -1611,11 +1611,10 @@ static struct worker *create_worker(struct worker_pool *pool) * remains stable across this function. See the comments above the * flag definition for details. */ + spin_lock_irq(&pool->lock); if (pool->flags & POOL_DISASSOCIATED) worker->flags |= WORKER_UNBOUND; - /* successful, commit the pointer to idr */ - spin_lock_irq(&pool->lock); idr_replace(&pool->worker_idr, worker, worker->id); spin_unlock_irq(&pool->lock); -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/