regulator: da9063: Check return value of devm_regmap_field_alloc calls
authorAxel Lin <axel.lin@ingics.com>
Sat, 26 Jan 2019 15:22:34 +0000 (23:22 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 28 Jan 2019 12:22:14 +0000 (12:22 +0000)
Since devm_regmap_field_alloc can fail, add error checking for it.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/da9063-regulator.c

index 8cbcd2a3eb2055d46da795f39b53c641a216ed6a..85c45577bad15863a9331ace60dd41e83c712bf5 100644 (file)
@@ -835,21 +835,40 @@ static int da9063_regulator_probe(struct platform_device *pdev)
                regl->desc.type = REGULATOR_VOLTAGE;
                regl->desc.owner = THIS_MODULE;
 
-               if (regl->info->mode.reg)
+               if (regl->info->mode.reg) {
                        regl->mode = devm_regmap_field_alloc(&pdev->dev,
                                        da9063->regmap, regl->info->mode);
-               if (regl->info->suspend.reg)
+                       if (IS_ERR(regl->mode))
+                               return PTR_ERR(regl->mode);
+               }
+
+               if (regl->info->suspend.reg) {
                        regl->suspend = devm_regmap_field_alloc(&pdev->dev,
                                        da9063->regmap, regl->info->suspend);
-               if (regl->info->sleep.reg)
+                       if (IS_ERR(regl->suspend))
+                               return PTR_ERR(regl->suspend);
+               }
+
+               if (regl->info->sleep.reg) {
                        regl->sleep = devm_regmap_field_alloc(&pdev->dev,
                                        da9063->regmap, regl->info->sleep);
-               if (regl->info->suspend_sleep.reg)
+                       if (IS_ERR(regl->sleep))
+                               return PTR_ERR(regl->sleep);
+               }
+
+               if (regl->info->suspend_sleep.reg) {
                        regl->suspend_sleep = devm_regmap_field_alloc(&pdev->dev,
                                        da9063->regmap, regl->info->suspend_sleep);
-               if (regl->info->ilimit.reg)
+                       if (IS_ERR(regl->suspend_sleep))
+                               return PTR_ERR(regl->suspend_sleep);
+               }
+
+               if (regl->info->ilimit.reg) {
                        regl->ilimit = devm_regmap_field_alloc(&pdev->dev,
                                        da9063->regmap, regl->info->ilimit);
+                       if (IS_ERR(regl->ilimit))
+                               return PTR_ERR(regl->ilimit);
+               }
 
                /* Register regulator */
                memset(&config, 0, sizeof(config));