diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2017-01-28 11:32:35 +0300 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2017-02-13 15:20:47 +0300 |
commit | 7413d1f509eb0ee605973c1a6da9911700c80012 (patch) | |
tree | 4fb4da04ce2c6bfd16db34dd3803fb2a6716f363 /drivers/mmc | |
parent | 543c576d1bf215c5d3c1b0615a85cec1b68a04cb (diff) | |
download | linux-7413d1f509eb0ee605973c1a6da9911700c80012.tar.xz |
mmc: core: simplify ida handling
ida handling can be simplified by switching to the ida_simple_
functions.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/core/host.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index 8f75a84d861e..170881854975 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -34,14 +34,11 @@ #define cls_dev_to_mmc_host(d) container_of(d, struct mmc_host, class_dev) static DEFINE_IDA(mmc_host_ida); -static DEFINE_SPINLOCK(mmc_host_lock); static void mmc_host_classdev_release(struct device *dev) { struct mmc_host *host = cls_dev_to_mmc_host(dev); - spin_lock(&mmc_host_lock); - ida_remove(&mmc_host_ida, host->index); - spin_unlock(&mmc_host_lock); + ida_simple_remove(&mmc_host_ida, host->index); kfree(host); } @@ -356,22 +353,13 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) /* scanning will be enabled when we're ready */ host->rescan_disable = 1; -again: - if (!ida_pre_get(&mmc_host_ida, GFP_KERNEL)) { + err = ida_simple_get(&mmc_host_ida, 0, 0, GFP_KERNEL); + if (err < 0) { kfree(host); return NULL; } - spin_lock(&mmc_host_lock); - err = ida_get_new(&mmc_host_ida, &host->index); - spin_unlock(&mmc_host_lock); - - if (err == -EAGAIN) { - goto again; - } else if (err) { - kfree(host); - return NULL; - } + host->index = err; dev_set_name(&host->class_dev, "mmc%d", host->index); |