From: Marek Szyprowski <m.szyprowski@samsung.com>
Date: Thu, 23 Sep 2010 14:22:05 +0000 (+0200)
Subject: mmc: sdhci-s3c: fix NULL ptr access in sdhci_s3c_remove
X-Git-Tag: firefly_0821_release~10186^2~848
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ce6258fde20a9d6bb213a8c2acb6fe8a003d6c7b;p=firefly-linux-kernel-4.4.55.git

mmc: sdhci-s3c: fix NULL ptr access in sdhci_s3c_remove

commit 9320f7cbbdd5febf013b0e91db29189724057738 upstream.

If not all clocks have been defined in platform data, the driver will
cause a null pointer dereference when it is removed. This patch fixes
this issue.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
index 676cd0c327f5..14c5480e059c 100644
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -379,8 +379,10 @@ static int __devexit sdhci_s3c_remove(struct platform_device *pdev)
 	sdhci_remove_host(host, 1);
 
 	for (ptr = 0; ptr < 3; ptr++) {
-		clk_disable(sc->clk_bus[ptr]);
-		clk_put(sc->clk_bus[ptr]);
+		if (sc->clk_bus[ptr]) {
+			clk_disable(sc->clk_bus[ptr]);
+			clk_put(sc->clk_bus[ptr]);
+		}
 	}
 	clk_disable(sc->clk_io);
 	clk_put(sc->clk_io);