regulator: s2mps11: Simplify expression used in BUILD_BUG_ON
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>
Thu, 18 Feb 2016 00:35:07 +0000 (09:35 +0900)
committerMark Brown <broonie@kernel.org>
Thu, 18 Feb 2016 13:34:26 +0000 (13:34 +0000)
Following BUILD_BUG_ON using a variable fails for some of the compilers
and optimization levels (reported for gcc 4.9):
var = ARRAY_SIZE(s2mps15_regulators);
BUILD_BUG_ON(S2MPS_REGULATOR_MAX < var);
Fix this by using ARRAY_SIZE directly.

Additionally add missing BUILD_BUG_ON check for S2MPS15 device (the
check ensures that internal arrays are big enough to hold data for all
of regulators on all devices).

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Tested-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/s2mps11.c

index 3242ffc0cb25afdfa8adad11fd40878b6153f1b6..df553fb40d8233f5ae9faba190c13907efbcf460 100644 (file)
@@ -1090,26 +1090,27 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)
        case S2MPS11X:
                s2mps11->rdev_num = ARRAY_SIZE(s2mps11_regulators);
                regulators = s2mps11_regulators;
-               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
+               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < ARRAY_SIZE(s2mps11_regulators));
                break;
        case S2MPS13X:
                s2mps11->rdev_num = ARRAY_SIZE(s2mps13_regulators);
                regulators = s2mps13_regulators;
-               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
+               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < ARRAY_SIZE(s2mps13_regulators));
                break;
        case S2MPS14X:
                s2mps11->rdev_num = ARRAY_SIZE(s2mps14_regulators);
                regulators = s2mps14_regulators;
-               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
+               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < ARRAY_SIZE(s2mps14_regulators));
                break;
        case S2MPS15X:
                s2mps11->rdev_num = ARRAY_SIZE(s2mps15_regulators);
                regulators = s2mps15_regulators;
+               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < ARRAY_SIZE(s2mps15_regulators));
                break;
        case S2MPU02:
                s2mps11->rdev_num = ARRAY_SIZE(s2mpu02_regulators);
                regulators = s2mpu02_regulators;
-               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
+               BUILD_BUG_ON(S2MPS_REGULATOR_MAX < ARRAY_SIZE(s2mpu02_regulators));
                break;
        default:
                dev_err(&pdev->dev, "Invalid device type: %u\n",