OSDN Git Service

regulator: 88pm800: Fix checking whether num_regulator is valid
authorAxel Lin <axel.lin@ingics.com>
Sun, 4 Aug 2013 01:23:28 +0000 (09:23 +0800)
committerMark Brown <broonie@linaro.org>
Tue, 13 Aug 2013 10:19:05 +0000 (11:19 +0100)
The code to check whether num_regulator is valid is wrong because it should
iterate all array entries rather than break from the for loop if
pdata->regulators[i] is NULL.

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

index b4c29b1..f423565 100644 (file)
@@ -299,10 +299,13 @@ static int pm800_regulator_probe(struct platform_device *pdev)
                        return -ENODEV;
                }
        } else if (pdata->num_regulators) {
-               /* Check whether num_regulator is valid. */
                unsigned int count = 0;
-               for (i = 0; pdata->regulators[i]; i++)
-                       count++;
+
+               /* Check whether num_regulator is valid. */
+               for (i = 0; ARRAY_SIZE(pdata->regulators); i++) {
+                       if (pdata->regulators[i])
+                               count++;
+               }
                if (count != pdata->num_regulators)
                        return -EINVAL;
        } else {