drivers: mmc: Avoid memory leak in case of failure
authorSuniel Mahesh <sunil.m@techveda.org>
Thu, 5 Oct 2017 06:18:56 +0000 (11:48 +0530)
committerJaehoon Chung <jh80.chung@samsung.com>
Fri, 12 Jan 2018 09:11:03 +0000 (18:11 +0900)
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>
drivers/mmc/exynos_dw_mmc.c

index 5edd383c68484e2096e6ca785039a90e42baee5e..e40575e58922a1449d4e09aad9d999dec03df43b 100644 (file)
@@ -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;
        }