Doing the dance to drop the maple tree's internal spinlock means we need multiple exit paths in our error handling. Reported-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx> --- drivers/base/regmap/regcache-maple.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/base/regmap/regcache-maple.c b/drivers/base/regmap/regcache-maple.c index 497cc708d277..20fb7228fc6b 100644 --- a/drivers/base/regmap/regcache-maple.c +++ b/drivers/base/regmap/regcache-maple.c @@ -137,7 +137,7 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min, GFP_KERNEL); if (!lower) { ret = -ENOMEM; - goto out; + goto out_unlocked; } } @@ -151,7 +151,7 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min, GFP_KERNEL); if (!upper) { ret = -ENOMEM; - goto out; + goto out_unlocked; } } @@ -179,6 +179,7 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min, out: mas_unlock(&mas); +out_unlocked: kfree(lower); kfree(upper); --- base-commit: f033c26de5a5734625d2dd1dc196745fae186f1b change-id: 20230403-regmap-maple-unlock-98aa84cc47f5 Best regards, -- Mark Brown <broonie@xxxxxxxxxx>