]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
regmap: maple: free entry on mas_store_gfp() failure
authorKaushlendra Kumar <kaushlendra.kumar@intel.com>
Mon, 5 Jan 2026 03:18:20 +0000 (08:48 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 5 Jan 2026 13:14:50 +0000 (13:14 +0000)
regcache_maple_write() allocates a new block ('entry') to merge
adjacent ranges and then stores it with mas_store_gfp().
When mas_store_gfp() fails, the new 'entry' remains allocated and
is never freed, leaking memory.

Free 'entry' on the failure path; on success continue freeing the
replaced neighbor blocks ('lower', 'upper').

Signed-off-by: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
Link: https://patch.msgid.link/20260105031820.260119-1-kaushlendra.kumar@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regcache-maple.c

index ca1c72b68f31325823df59a88d85777bf30e1961..4134a77ae1d634d7fea82cbb304d8316787ef5c8 100644 (file)
@@ -95,12 +95,13 @@ static int regcache_maple_write(struct regmap *map, unsigned int reg,
 
        mas_unlock(&mas);
 
-       if (ret == 0) {
-               kfree(lower);
-               kfree(upper);
+       if (ret) {
+               kfree(entry);
+               return ret;
        }
-       
-       return ret;
+       kfree(lower);
+       kfree(upper);
+       return 0;
 }
 
 static int regcache_maple_drop(struct regmap *map, unsigned int min,