diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-27 15:27:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-27 15:27:00 -0400 |
commit | 65097561b91c4f8ce92a2905f150900f1779ccd1 (patch) | |
tree | 10928f1396e077b96dbba1f93417248145561e23 | |
parent | 9a457a524762edc1bb1ded65b7a75c01738632d5 (diff) | |
parent | 9320f7cbbdd5febf013b0e91db29189724057738 (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-- | MAINTAINERS | 8 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci-s3c.c | 12 |
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 | |||
3925 | F: drivers/mfd/ | 3925 | F: drivers/mfd/ |
3926 | 3926 | ||
3927 | MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM | 3927 | MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM |
3928 | S: Orphan | 3928 | M: Chris Ball <cjb@laptop.org> |
3929 | L: linux-mmc@vger.kernel.org | 3929 | L: linux-mmc@vger.kernel.org |
3930 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git | ||
3931 | S: Maintained | ||
3930 | F: drivers/mmc/ | 3932 | F: drivers/mmc/ |
3931 | F: include/linux/mmc/ | 3933 | F: include/linux/mmc/ |
3932 | 3934 | ||
@@ -5097,8 +5099,10 @@ S: Maintained | |||
5097 | F: drivers/mmc/host/sdricoh_cs.c | 5099 | F: drivers/mmc/host/sdricoh_cs.c |
5098 | 5100 | ||
5099 | SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER | 5101 | SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER |
5100 | S: Orphan | 5102 | M: Chris Ball <cjb@laptop.org> |
5101 | L: linux-mmc@vger.kernel.org | 5103 | L: linux-mmc@vger.kernel.org |
5104 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git | ||
5105 | S: Maintained | ||
5102 | F: drivers/mmc/host/sdhci.* | 5106 | F: drivers/mmc/host/sdhci.* |
5103 | 5107 | ||
5104 | SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF) | 5108 | SECURE 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 = { | |||
241 | static void sdhci_s3c_notify_change(struct platform_device *dev, int state) | 241 | static 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); |