summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Goodbody <andrew.goodbody@linaro.org>2025-07-03 15:03:30 +0100
committerTom Rini <trini@konsulko.com>2025-07-17 11:39:06 -0600
commit1d2723731b41be97fdc56acb68e075f752fd2f2a (patch)
treee7577807d38939493ea012784f45be7f750a7ce6
parent3b4604a40b9fd61b87e9d059fc56f04d36f1a380 (diff)
mmc: Take cleanup path to free memory on error exit
Instead of returning -EINVAL directly which will not call the cleanup path to free memory, fix the code to set the error and then goto the cleanup code. This issue found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org> Reviewed-by: Peng Fan <peng.fan@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
-rw-r--r--drivers/mmc/mmc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 2c1f4f9c336..5f2efbe6df9 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -2365,8 +2365,10 @@ static int mmc_startup_v4(struct mmc *mmc)
return -ENOMEM;
memcpy(mmc->ext_csd, ext_csd, MMC_MAX_BLOCK_LEN);
#endif
- if (ext_csd[EXT_CSD_REV] >= ARRAY_SIZE(mmc_versions))
- return -EINVAL;
+ if (ext_csd[EXT_CSD_REV] >= ARRAY_SIZE(mmc_versions)) {
+ err = -EINVAL;
+ goto error;
+ }
mmc->version = mmc_versions[ext_csd[EXT_CSD_REV]];