• Arnd Bergmann's avatar
    mfd: db8500: Avoid uninitialized variable reference · a7e46317
    Arnd Bergmann authored
    The prcmu_config_clkout() function ensures that the 'clkout' argument
    can only be '0' or '1' using an appropriate BUG_ON(), so the compiler
    should know that the div_mask, mask, and bits variables are always
    initialized later on. However, it doesn't understand this in gcc-5.2
    and produces a false positive warning instead:
    
    drivers/mfd/db8500-prcmu.c: In function 'prcmu_config_clkout':
    drivers/mfd/db8500-prcmu.c:762:10: error: 'div_mask' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      if (val & div_mask) {
              ^
    drivers/mfd/db8500-prcmu.c:769:13: error: 'mask' may be used uninitialized in this function [-Werror=maybe-uninitialized]
        if ((val & mask & ~div_mask) != bits) {
                 ^
    drivers/mfd/db8500-prcmu.c:757:7: error: 'bits' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    Replacing the switch() statement with an equivalent if() lets
    gcc figure this out reliably and avoids the warnings.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
    a7e46317
db8500-prcmu.c 82.3 KB