misc/tifm_core: convert to idr_alloc()
authorTejun Heo <tj@kernel.org>
Thu, 28 Feb 2013 01:04:31 +0000 (17:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 28 Feb 2013 03:10:17 +0000 (19:10 -0800)
Convert to the much saner new idr interface.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Alex Dubov <oakad@yahoo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/misc/tifm_core.c

index 0bd5349..0ab7c92 100644 (file)
@@ -196,13 +196,14 @@ int tifm_add_adapter(struct tifm_adapter *fm)
 {
        int rc;
 
 {
        int rc;
 
-       if (!idr_pre_get(&tifm_adapter_idr, GFP_KERNEL))
-               return -ENOMEM;
-
+       idr_preload(GFP_KERNEL);
        spin_lock(&tifm_adapter_lock);
        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);
        spin_unlock(&tifm_adapter_lock);
-       if (rc)
+       idr_preload_end();
+       if (rc < 0)
                return rc;
 
        dev_set_name(&fm->dev, "tifm%u", fm->id);
                return rc;
 
        dev_set_name(&fm->dev, "tifm%u", fm->id);