*/
 static struct worker *create_worker(struct worker_pool *pool)
 {
-       struct worker *worker = NULL;
-       int id = -1;
+       struct worker *worker;
+       int id;
        char id_buf[16];
 
        /* ID is needed to determine kthread name */
-       id = ida_simple_get(&pool->worker_ida, 0, 0, GFP_KERNEL);
+       id = ida_alloc(&pool->worker_ida, GFP_KERNEL);
        if (id < 0)
-               goto fail;
+               return NULL;
 
        worker = alloc_worker(pool->node);
        if (!worker)
        return worker;
 
 fail:
-       if (id >= 0)
-               ida_simple_remove(&pool->worker_ida, id);
+       ida_free(&pool->worker_ida, id);
        kfree(worker);
        return NULL;
 }
                set_pf_worker(false);
 
                set_task_comm(worker->task, "kworker/dying");
-               ida_simple_remove(&pool->worker_ida, worker->id);
+               ida_free(&pool->worker_ida, worker->id);
                worker_detach_from_pool(worker);
                kfree(worker);
                return 0;