|
@@ -196,13 +196,14 @@ int tifm_add_adapter(struct tifm_adapter *fm)
|
|
|
{
|
|
|
int rc;
|
|
|
|
|
|
- if (!idr_pre_get(&tifm_adapter_idr, GFP_KERNEL))
|
|
|
- return -ENOMEM;
|
|
|
-
|
|
|
+ idr_preload(GFP_KERNEL);
|
|
|
spin_lock(&tifm_adapter_lock);
|
|
|
- rc = idr_get_new(&tifm_adapter_idr, fm, &fm->id);
|
|
|
+ rc = idr_alloc(&tifm_adapter_idr, fm, 0, 0, GFP_NOWAIT);
|
|
|
+ if (rc >= 0)
|
|
|
+ fm->id = rc;
|
|
|
spin_unlock(&tifm_adapter_lock);
|
|
|
- if (rc)
|
|
|
+ idr_preload_end();
|
|
|
+ if (rc < 0)
|
|
|
return rc;
|
|
|
|
|
|
dev_set_name(&fm->dev, "tifm%u", fm->id);
|