diff --git a/[refs] b/[refs] index a5ce2ca0f53b..39e815fd8502 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ebd6c70714f5eda9cd1b60d23754ffd1d62481f6 +refs/heads/master: e68035fb65dec05718d765fbea14d2e527214ff6 diff --git a/trunk/kernel/workqueue.c b/trunk/kernel/workqueue.c index 81f2457811eb..55fac5b991b7 100644 --- a/trunk/kernel/workqueue.c +++ b/trunk/kernel/workqueue.c @@ -457,11 +457,12 @@ static int worker_pool_assign_id(struct worker_pool *pool) int ret; mutex_lock(&worker_pool_idr_mutex); - idr_pre_get(&worker_pool_idr, GFP_KERNEL); - ret = idr_get_new(&worker_pool_idr, pool, &pool->id); + ret = idr_alloc(&worker_pool_idr, pool, 0, 0, GFP_KERNEL); + if (ret >= 0) + pool->id = ret; mutex_unlock(&worker_pool_idr_mutex); - return ret; + return ret < 0 ? ret : 0; } /*