Commit 3ab4ee8f authored by Tejun Heo's avatar Tejun Heo Committed by Linus Torvalds

misc/c2port: convert to idr_alloc()

Convert to the much saner new idr interface.
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Rodolfo Giometti <giometti@linux.it>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9f12563d
...@@ -885,7 +885,7 @@ struct c2port_device *c2port_device_register(char *name, ...@@ -885,7 +885,7 @@ struct c2port_device *c2port_device_register(char *name,
struct c2port_ops *ops, void *devdata) struct c2port_ops *ops, void *devdata)
{ {
struct c2port_device *c2dev; struct c2port_device *c2dev;
int id, ret; int ret;
if (unlikely(!ops) || unlikely(!ops->access) || \ if (unlikely(!ops) || unlikely(!ops->access) || \
unlikely(!ops->c2d_dir) || unlikely(!ops->c2ck_set) || \ unlikely(!ops->c2d_dir) || unlikely(!ops->c2ck_set) || \
...@@ -897,22 +897,18 @@ struct c2port_device *c2port_device_register(char *name, ...@@ -897,22 +897,18 @@ struct c2port_device *c2port_device_register(char *name,
if (unlikely(!c2dev)) if (unlikely(!c2dev))
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
ret = idr_pre_get(&c2port_idr, GFP_KERNEL); idr_preload(GFP_KERNEL);
if (!ret) {
ret = -ENOMEM;
goto error_idr_get_new;
}
spin_lock_irq(&c2port_idr_lock); spin_lock_irq(&c2port_idr_lock);
ret = idr_get_new(&c2port_idr, c2dev, &id); ret = idr_alloc(&c2port_idr, c2dev, 0, 0, GFP_NOWAIT);
spin_unlock_irq(&c2port_idr_lock); spin_unlock_irq(&c2port_idr_lock);
idr_preload_end();
if (ret < 0) if (ret < 0)
goto error_idr_get_new; goto error_idr_alloc;
c2dev->id = id; c2dev->id = ret;
c2dev->dev = device_create(c2port_class, NULL, 0, c2dev, c2dev->dev = device_create(c2port_class, NULL, 0, c2dev,
"c2port%d", id); "c2port%d", c2dev->id);
if (unlikely(IS_ERR(c2dev->dev))) { if (unlikely(IS_ERR(c2dev->dev))) {
ret = PTR_ERR(c2dev->dev); ret = PTR_ERR(c2dev->dev);
goto error_device_create; goto error_device_create;
...@@ -946,10 +942,10 @@ struct c2port_device *c2port_device_register(char *name, ...@@ -946,10 +942,10 @@ struct c2port_device *c2port_device_register(char *name,
error_device_create: error_device_create:
spin_lock_irq(&c2port_idr_lock); spin_lock_irq(&c2port_idr_lock);
idr_remove(&c2port_idr, id); idr_remove(&c2port_idr, c2dev->id);
spin_unlock_irq(&c2port_idr_lock); spin_unlock_irq(&c2port_idr_lock);
error_idr_get_new: error_idr_alloc:
kfree(c2dev); kfree(c2dev);
return ERR_PTR(ret); return ERR_PTR(ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment