aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-09-27 15:27:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-09-27 15:27:00 -0400
commit65097561b91c4f8ce92a2905f150900f1779ccd1 (patch)
tree10928f1396e077b96dbba1f93417248145561e23
parent9a457a524762edc1bb1ded65b7a75c01738632d5 (diff)
parent9320f7cbbdd5febf013b0e91db29189724057738 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: mmc: sdhci-s3c: fix NULL ptr access in sdhci_s3c_remove mmc: sdhci-s3c: fix incorrect spinlock usage after merge mmc: MAINTAINERS: add myself as MMC maintainer
-rw-r--r--MAINTAINERS8
-rw-r--r--drivers/mmc/host/sdhci-s3c.c12
2 files changed, 14 insertions, 6 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index ceba39bc1b49..668682d1f5fa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3925,8 +3925,10 @@ S: Supported
3925F: drivers/mfd/ 3925F: drivers/mfd/
3926 3926
3927MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM 3927MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
3928S: Orphan 3928M: Chris Ball <cjb@laptop.org>
3929L: linux-mmc@vger.kernel.org 3929L: linux-mmc@vger.kernel.org
3930T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
3931S: Maintained
3930F: drivers/mmc/ 3932F: drivers/mmc/
3931F: include/linux/mmc/ 3933F: include/linux/mmc/
3932 3934
@@ -5097,8 +5099,10 @@ S: Maintained
5097F: drivers/mmc/host/sdricoh_cs.c 5099F: drivers/mmc/host/sdricoh_cs.c
5098 5100
5099SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER 5101SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
5100S: Orphan 5102M: Chris Ball <cjb@laptop.org>
5101L: linux-mmc@vger.kernel.org 5103L: linux-mmc@vger.kernel.org
5104T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
5105S: Maintained
5102F: drivers/mmc/host/sdhci.* 5106F: drivers/mmc/host/sdhci.*
5103 5107
5104SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF) 5108SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
index 71ad4163b95e..aacb862ecc8a 100644
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -241,8 +241,10 @@ static struct sdhci_ops sdhci_s3c_ops = {
241static void sdhci_s3c_notify_change(struct platform_device *dev, int state) 241static void sdhci_s3c_notify_change(struct platform_device *dev, int state)
242{ 242{
243 struct sdhci_host *host = platform_get_drvdata(dev); 243 struct sdhci_host *host = platform_get_drvdata(dev);
244 unsigned long flags;
245
244 if (host) { 246 if (host) {
245 spin_lock(&host->lock); 247 spin_lock_irqsave(&host->lock, flags);
246 if (state) { 248 if (state) {
247 dev_dbg(&dev->dev, "card inserted.\n"); 249 dev_dbg(&dev->dev, "card inserted.\n");
248 host->flags &= ~SDHCI_DEVICE_DEAD; 250 host->flags &= ~SDHCI_DEVICE_DEAD;
@@ -253,7 +255,7 @@ static void sdhci_s3c_notify_change(struct platform_device *dev, int state)
253 host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION; 255 host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;
254 } 256 }
255 tasklet_schedule(&host->card_tasklet); 257 tasklet_schedule(&host->card_tasklet);
256 spin_unlock(&host->lock); 258 spin_unlock_irqrestore(&host->lock, flags);
257 } 259 }
258} 260}
259 261
@@ -481,8 +483,10 @@ static int __devexit sdhci_s3c_remove(struct platform_device *pdev)
481 sdhci_remove_host(host, 1); 483 sdhci_remove_host(host, 1);
482 484
483 for (ptr = 0; ptr < 3; ptr++) { 485 for (ptr = 0; ptr < 3; ptr++) {
484 clk_disable(sc->clk_bus[ptr]); 486 if (sc->clk_bus[ptr]) {
485 clk_put(sc->clk_bus[ptr]); 487 clk_disable(sc->clk_bus[ptr]);
488 clk_put(sc->clk_bus[ptr]);
489 }
486 } 490 }
487 clk_disable(sc->clk_io); 491 clk_disable(sc->clk_io);
488 clk_put(sc->clk_io); 492 clk_put(sc->clk_io);