[PATCH 2/5] mmc: core: call pm_runtime_put_sync inpm_runtime_get_sync failed case

From: Li Fei
Date: Thu Feb 28 2013 - 02:45:55 EST



Even in failed case of pm_runtime_get_sync, the usage_count
is incremented. In order to keep the usage_count with correct
value and runtime power management to behave correctly, call
pm_runtime_put(_sync) in such case.

Signed-off-by Liu Chuansheng <chuansheng.liu@xxxxxxxxx>
Signed-off-by: Li Fei <fei.li@xxxxxxxxx>
---
drivers/mmc/core/sdio.c | 3 +--
drivers/mmc/core/sdio_bus.c | 4 +++-
2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index aa0719a..45ab6f32 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -874,6 +874,7 @@ static void mmc_sdio_detect(struct mmc_host *host)

mmc_release_host(host);

+out:
/*
* Tell PM core it's OK to power off the card now.
*
@@ -887,8 +888,6 @@ static void mmc_sdio_detect(struct mmc_host *host)
*/
if (host->caps & MMC_CAP_POWER_OFF_CARD)
pm_runtime_put_sync(&host->card->dev);
-
-out:
if (err) {
mmc_sdio_remove(host);

diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c
index 5e57048..d572b31 100644
--- a/drivers/mmc/core/sdio_bus.c
+++ b/drivers/mmc/core/sdio_bus.c
@@ -136,8 +136,10 @@ static int sdio_bus_probe(struct device *dev)
*/
if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) {
ret = pm_runtime_get_sync(dev);
- if (ret < 0)
+ if (ret < 0) {
+ pm_runtime_put_sync(dev);
goto out;
+ }
}

/* Set the default block size so the driver is sure it's something
--
1.7.4.1



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/