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>
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]];