Skip to content

Commit

Permalink
base: soc: siplify ida usage
Browse files Browse the repository at this point in the history
Simplify ida index allocation and removal by
using the ida_simple_* helper functions

Signed-off-by: Lee Duncan <[email protected]>
Reviewed-by: Johannes Thumshirn <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
gonzoleeman authored and gregkh committed Oct 4, 2015
1 parent fa40ae3 commit cfcf6a9
Showing 1 changed file with 5 additions and 16 deletions.
21 changes: 5 additions & 16 deletions drivers/base/soc.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
#include <linux/err.h>

static DEFINE_IDA(soc_ida);
static DEFINE_SPINLOCK(soc_lock);

static ssize_t soc_info_get(struct device *dev,
struct device_attribute *attr,
Expand Down Expand Up @@ -122,20 +121,10 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
}

/* Fetch a unique (reclaimable) SOC ID. */
do {
if (!ida_pre_get(&soc_ida, GFP_KERNEL)) {
ret = -ENOMEM;
goto out2;
}

spin_lock(&soc_lock);
ret = ida_get_new(&soc_ida, &soc_dev->soc_dev_num);
spin_unlock(&soc_lock);

} while (ret == -EAGAIN);

if (ret)
ret = ida_simple_get(&soc_ida, 0, 0, GFP_KERNEL);
if (ret < 0)
goto out2;
soc_dev->soc_dev_num = ret;

soc_dev->attr = soc_dev_attr;
soc_dev->dev.bus = &soc_bus_type;
Expand All @@ -151,7 +140,7 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
return soc_dev;

out3:
ida_remove(&soc_ida, soc_dev->soc_dev_num);
ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);
out2:
kfree(soc_dev);
out1:
Expand All @@ -161,7 +150,7 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
/* Ensure soc_dev->attr is freed prior to calling soc_device_unregister. */
void soc_device_unregister(struct soc_device *soc_dev)
{
ida_remove(&soc_ida, soc_dev->soc_dev_num);
ida_simple_remove(&soc_ida, soc_dev->soc_dev_num);

device_unregister(&soc_dev->dev);
}
Expand Down

0 comments on commit cfcf6a9

Please sign in to comment.