From: Bharat Kumar Reddy Gooty <bharat.gooty@broadcom.com>
Date: Tue, 31 Mar 2020 05:34:03 +0000 (+0530)
Subject: drivers: mmc: iproc_sdhci: fix possible memory leak
X-Git-Tag: v2025.01-rc5-pxa1908~2466^2~12
X-Git-Url: http://git.dujemihanovic.xyz/html/static/git-logo.png?a=commitdiff_plain;h=d5b8500f033fd14c3ab6e66417ce8c819f7889db;p=u-boot.git

drivers: mmc: iproc_sdhci: fix possible memory leak

Free the pointer variable 'iproc_sdhci' upon failure to fix
possible memory leak.

Signed-off-by: Bharat Kumar Reddy Gooty <bharat.gooty@broadcom.com>
Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>
---

diff --git a/drivers/mmc/iproc_sdhci.c b/drivers/mmc/iproc_sdhci.c
index 831dd32eb7..36ecdba5c6 100644
--- a/drivers/mmc/iproc_sdhci.c
+++ b/drivers/mmc/iproc_sdhci.c
@@ -176,8 +176,7 @@ static int iproc_sdhci_probe(struct udevice *dev)
 	u32 f_min_max[2];
 	int ret;
 
-	iproc_host = (struct sdhci_iproc_host *)
-			malloc(sizeof(struct sdhci_iproc_host));
+	iproc_host = malloc(sizeof(struct sdhci_iproc_host));
 	if (!iproc_host) {
 		printf("%s: sdhci host malloc fail!\n", __func__);
 		return -ENOMEM;
@@ -198,6 +197,7 @@ static int iproc_sdhci_probe(struct udevice *dev)
 				   "clock-freq-min-max", f_min_max, 2);
 	if (ret) {
 		printf("sdhci: clock-freq-min-max not found\n");
+		free(iproc_host);
 		return ret;
 	}
 	host->max_clk = f_min_max[1];
@@ -212,8 +212,10 @@ static int iproc_sdhci_probe(struct udevice *dev)
 
 	ret = sdhci_setup_cfg(&plat->cfg, &iproc_host->host,
 			      f_min_max[1], f_min_max[0]);
-	if (ret)
+	if (ret) {
+		free(iproc_host);
 		return ret;
+	}
 
 	iproc_host->host.mmc = &plat->mmc;
 	iproc_host->host.mmc->dev = dev;