]> Pileus Git - ~andy/linux/blobdiff - drivers/misc/tifm_core.c
Merge tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux
[~andy/linux] / drivers / misc / tifm_core.c
index 0bd5349b04228ca0b784c44d4ea5dd6770450472..0ab7c922212cd860703d78a85621bfe68a067825 100644 (file)
@@ -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);