regmap: Fix memory leak in regcache_init error path
Make sure all allocated memory gets freed again in case initializing the cache failed. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
021cd616de
commit
bd061c78ca
1 changed files with 10 additions and 1 deletions
|
@ -144,9 +144,18 @@ int regcache_init(struct regmap *map)
|
||||||
if (map->cache_ops->init) {
|
if (map->cache_ops->init) {
|
||||||
dev_dbg(map->dev, "Initializing %s cache\n",
|
dev_dbg(map->dev, "Initializing %s cache\n",
|
||||||
map->cache_ops->name);
|
map->cache_ops->name);
|
||||||
return map->cache_ops->init(map);
|
ret = map->cache_ops->init(map);
|
||||||
|
if (ret)
|
||||||
|
goto err_free;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_free:
|
||||||
|
kfree(map->reg_defaults);
|
||||||
|
if (map->cache_free)
|
||||||
|
kfree(map->reg_defaults_raw);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void regcache_exit(struct regmap *map)
|
void regcache_exit(struct regmap *map)
|
||||||
|
|
Loading…
Add table
Reference in a new issue