diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2011-11-14 10:40:16 +0100 |
---|---|---|
committer | Lokesh Pathak <lpathak@nvidia.com> | 2012-03-05 07:49:51 -0800 |
commit | 4aafc2286d96d94b93cc1f4d25aa5f9b0648acb5 (patch) | |
tree | 18d0d1f8a3b4ddffd082e4d9de3eaa0e531a47a3 /drivers/base/regmap | |
parent | b7a44ba03dbb7e251019dc578590f8c5080eae49 (diff) |
regmap: Fix memory leak in regcache_hw_init error path
Make sure reg_defaults_raw gets freed in case of an error.
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>
(cherry picked from commit 021cd616decb4e8a4b31f1f8c466a847e8c04e67)
Change-Id: I7e9cbfa66b52197b22551e794912185dfc120ada
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/87555
Diffstat (limited to 'drivers/base/regmap')
-rw-r--r-- | drivers/base/regmap/regcache.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index dbff7a1a9855..a9ce8ae6becb 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -60,8 +60,10 @@ static int regcache_hw_init(struct regmap *map) map->reg_defaults = kmalloc(count * sizeof(struct reg_default), GFP_KERNEL); - if (!map->reg_defaults) - return -ENOMEM; + if (!map->reg_defaults) { + ret = -ENOMEM; + goto err_free; + } /* fill the reg_defaults */ map->num_reg_defaults = count; @@ -76,6 +78,12 @@ static int regcache_hw_init(struct regmap *map) } return 0; + +err_free: + if (map->cache_free) + kfree(map->reg_defaults_raw); + + return ret; } int regcache_init(struct regmap *map) |