regmap: cache: Add extra parameter check in regcache_init
authorSchspa Shi <schspa@gmail.com>
Wed, 29 Jun 2022 13:09:51 +0000 (21:09 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 30 Jun 2022 12:33:21 +0000 (13:33 +0100)
When num_reg_defaults > 0 but reg_defaults is NULL, there will be a
NULL pointer exception.

Current code has no such usage, but as additional hardening, also
check this to prevent any chance of crashing.

Signed-off-by: Schspa Shi <schspa@gmail.com>
Link: https://lore.kernel.org/r/20220629130951.63040-1-schspa@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regcache.c

index ef62ec2..362e043 100644 (file)
@@ -133,6 +133,12 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
                return -EINVAL;
        }
 
+       if (config->num_reg_defaults && !config->reg_defaults) {
+               dev_err(map->dev,
+                       "Register defaults number are set without the reg!\n");
+               return -EINVAL;
+       }
+
        for (i = 0; i < config->num_reg_defaults; i++)
                if (config->reg_defaults[i].reg % map->reg_stride)
                        return -EINVAL;