From e7819f86e6ba280bba34e06f528e1a678c70fc1f Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Wed, 27 Feb 2013 17:04:32 -0800 Subject: [PATCH] --- yaml --- r: 359355 b: refs/heads/master c: 803d9e043dc31ea2d26442618f0eb020550f8e08 h: refs/heads/master i: 359353: 7dccf4c96c1dd7986ebf13a5e0f836ac49c02c9b 359351: 7f6d45c3729d0ffec70f8cf7781e04b9147d3364 v: v3 --- [refs] | 2 +- trunk/drivers/mmc/core/host.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 33c0ef7d3f66..56cee669e52b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 57f2667cc7ebf69bd5fdb26f132228d331766ea8 +refs/heads/master: 803d9e043dc31ea2d26442618f0eb020550f8e08 diff --git a/trunk/drivers/mmc/core/host.c b/trunk/drivers/mmc/core/host.c index 821cd8224137..2a3593d9f87d 100644 --- a/trunk/drivers/mmc/core/host.c +++ b/trunk/drivers/mmc/core/host.c @@ -429,19 +429,20 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) int err; struct mmc_host *host; - if (!idr_pre_get(&mmc_host_idr, GFP_KERNEL)) - return NULL; - host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL); if (!host) return NULL; /* scanning will be enabled when we're ready */ host->rescan_disable = 1; + idr_preload(GFP_KERNEL); spin_lock(&mmc_host_lock); - err = idr_get_new(&mmc_host_idr, host, &host->index); + err = idr_alloc(&mmc_host_idr, host, 0, 0, GFP_NOWAIT); + if (err >= 0) + host->index = err; spin_unlock(&mmc_host_lock); - if (err) + idr_preload_end(); + if (err < 0) goto free; dev_set_name(&host->class_dev, "mmc%d", host->index);