summaryrefslogtreecommitdiff
path: root/drivers/mmc/exynos_dw_mmc.c
diff options
context:
space:
mode:
authorSuniel Mahesh <sunil.m@techveda.org>2017-10-05 11:48:56 +0530
committerJaehoon Chung <jh80.chung@samsung.com>2018-01-12 18:11:03 +0900
commit0e1746acacbb6dcaa0e9205f2712faf9d1e321a0 (patch)
tree125ee8c119a06ef630d385571abe623990031948 /drivers/mmc/exynos_dw_mmc.c
parent18e7c8f6aa5fe3893b85830abf2458559087b42e (diff)
drivers: mmc: Avoid memory leak in case of failure
priv pointer should be freed before returning with an error value from exynos_dwmci_get_config(). Signed-off-by: Suniel Mahesh <sunil.m@techveda.org> Signed-off-by: Raghu Bharadwaj <raghu@techveda.org>
Diffstat (limited to 'drivers/mmc/exynos_dw_mmc.c')
-rw-r--r--drivers/mmc/exynos_dw_mmc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c
index 5edd383c68..e40575e589 100644
--- a/drivers/mmc/exynos_dw_mmc.c
+++ b/drivers/mmc/exynos_dw_mmc.c
@@ -168,6 +168,7 @@ static int exynos_dwmci_get_config(const void *blob, int node,
if (host->dev_index > 4) {
printf("DWMMC%d: Can't get the dev index\n", host->dev_index);
+ free(priv);
return -EINVAL;
}
@@ -178,6 +179,7 @@ static int exynos_dwmci_get_config(const void *blob, int node,
base = fdtdec_get_addr(blob, node, "reg");
if (!base) {
printf("DWMMC%d: Can't get base address\n", host->dev_index);
+ free(priv);
return -EINVAL;
}
host->ioaddr = (void *)base;
@@ -187,6 +189,7 @@ static int exynos_dwmci_get_config(const void *blob, int node,
if (err) {
printf("DWMMC%d: Can't get sdr-timings for devider\n",
host->dev_index);
+ free(priv);
return -EINVAL;
}