|
@@ -686,18 +686,14 @@ static int get_dma_id(struct dma_device *device)
|
|
|
{
|
|
|
int rc;
|
|
|
|
|
|
- idr_retry:
|
|
|
- if (!idr_pre_get(&dma_idr, GFP_KERNEL))
|
|
|
- return -ENOMEM;
|
|
|
mutex_lock(&dma_list_mutex);
|
|
|
- rc = idr_get_new(&dma_idr, NULL, &device->dev_id);
|
|
|
- mutex_unlock(&dma_list_mutex);
|
|
|
- if (rc == -EAGAIN)
|
|
|
- goto idr_retry;
|
|
|
- else if (rc != 0)
|
|
|
- return rc;
|
|
|
|
|
|
- return 0;
|
|
|
+ rc = idr_alloc(&dma_idr, NULL, 0, 0, GFP_KERNEL);
|
|
|
+ if (rc >= 0)
|
|
|
+ device->dev_id = rc;
|
|
|
+
|
|
|
+ mutex_unlock(&dma_list_mutex);
|
|
|
+ return rc < 0 ? rc : 0;
|
|
|
}
|
|
|
|
|
|
/**
|