:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check warning: drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]" ::::::
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Martyn Welch <[email protected]> tree: https://gitlab.collabora.com/martyn/linux pcal6534-upstreaming head: 91a124a66bb4c2e3ff10a6e2e43123435eebd0c9 commit: 91a124a66bb4c2e3ff10a6e2e43123435eebd0c9 [6/6] gpio: pca953x: Add support for PCAL6534 and compatible :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: arm-randconfig-c002-20220828 (https://download.01.org/0day-ci/archive/20220828/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git remote add martyn https://gitlab.collabora.com/martyn/linux git fetch --no-tags martyn pcal6534-upstreaming git checkout 91a124a66bb4c2e3ff10a6e2e43123435eebd0c9 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> gcc-analyzer warnings: (new ones prefixed by >>) | | ~ | | | | | (5) following 'false' branch (when 'ret >= 0')... | 'pca953x_read_regs': event 6 | |cc1: | (6): ...to here | 'pca953x_read_regs': events 7-9 | | 492 | for (i = 0; i < NBANK(chip); i++) | 493 | bitmap_set_value8(val, value[i], i * BANK_SZ); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (8) ...to here | | (9) calling 'bitmap_set_value8' from 'pca953x_read_regs' | +--> 'bitmap_set_value8': events 10-11 | |include/linux/bitmap.h:583:20: | 583 | static inline void bitmap_set_value8(unsigned long *map, unsigned long value, | | ^~~~~~~~~~~~~~~~~ | | | | | (10) entry to 'bitmap_set_value8' |...... | 589 | map[index] &= ~(0xFFUL << offset); | | ~~~~~~~~~~ | | | | | (11) use of uninitialized value '*map_12(D) + _1' here | include/linux/bitmap.h:589:12: warning: use of uninitialized value '*map_12(D) + _1' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 589 | map[index] &= ~(0xFFUL << offset); | ~~~^~~~~~~ 'pca953x_gpio_set_multiple': event 1 | |drivers/gpio/gpio-pca953x.c:598:13: | 598 | static void pca953x_gpio_set_multiple(struct gpio_chip *gc, | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_set_multiple' | 'pca953x_gpio_set_multiple': event 2 | | 602 | DECLARE_BITMAP(reg_val, MAX_LINE); | | ^~~~~~~ | | | | | (2) region created on stack here include/linux/types.h:11:23: note: in definition of macro 'DECLARE_BITMAP' | 11 | unsigned long name[BITS_TO_LONGS(bits)] | | ^~~~ | 'pca953x_gpio_set_multiple': event 3 | |drivers/gpio/gpio-pca953x.c:606:15: | 606 | ret = pca953x_read_regs(chip, chip->regs->output, reg_val); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (3) calling 'pca953x_read_regs' from 'pca953x_gpio_set_multiple' | +--> 'pca953x_read_regs': events 4-5 | | 480 | static int pca953x_read_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~ | | | | | (4) entry to 'pca953x_read_regs' |...... | 487 | if (ret < 0) { | | ~ | | | | | (5) following 'false' branch (when 'ret >= 0')... | 'pca953x_read_regs': event 6 | |cc1: | (6): ...to here | 'pca953x_read_regs': events 7-9 | | 492 | for (i = 0; i < NBANK(chip); i++) | 493 | bitmap_set_value8(val, value[i], i * BANK_SZ); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (8) ...to here | | (9) calling 'bitmap_set_value8' from 'pca953x_read_regs' | +--> 'bitmap_set_value8': events 10-11 | |include/linux/bitmap.h:583:20: | 583 | static inline void bitmap_set_value8(unsigned long *map, unsigned long value, | | ^~~~~~~~~~~~~~~~~ | | | | | (10) entry to 'bitmap_set_value8' |...... | 589 | map[index] &= ~(0xFFUL << offset); | | ~~~~~~~~~~ | | | | | (11) use of uninitialized value '*map_12(D) + _1' here | drivers/gpio/gpio-pca953x.c: In function 'pca953x_recalc_addr': >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_recalc_addr': events 1-6 | | 424 | int pinctrl; | | ^~~~~~~ | | | | | (1) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (2) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (3) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (4) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (5) ...to here (6) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_set_value': events 1-2 | | 550 | static void pca953x_gpio_set_value(struct gpio_chip *gc, unsigned off, int val) | | ^~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_set_value' |...... | 553 | u8 outreg = pca953x_recalc_addr(chip, chip->regs->output, off); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_gpio_set_value' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_write_regs': events 1-2 | | 462 | static int pca953x_write_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_write_regs' | 463 | { | 464 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_write_regs' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_regcache_sync': events 1-2 | | 1195 | static int pca953x_regcache_sync(struct device *dev) | | ^~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_regcache_sync' |...... | 1205 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_regcache_sync' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_direction_output': events 1-2 | | 511 | static int pca953x_gpio_direction_output(struct gpio_chip *gc, | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_direction_output' |...... | 515 | u8 dirreg = pca953x_recalc_addr(chip, chip->regs->direction, off); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_gpio_direction_output' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_get_value': events 1-2 | | 533 | static int pca953x_gpio_get_value(struct gpio_chip *gc, unsigned off) | | ^~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_get_value' |...... | 536 | u8 inreg = pca953x_recalc_addr(chip, chip->regs->input, off); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_gpio_get_value' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_read_regs': events 1-2 | | 480 | static int pca953x_read_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_read_regs' | 481 | { | 482 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_read_regs' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_direction_input': events 1-2 | | 498 | static int pca953x_gpio_direction_input(struct gpio_chip *gc, unsigned off) | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_direction_input' |...... | 501 | u8 dirreg = pca953x_recalc_addr(chip, chip->regs->direction, off); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_gpio_direction_input' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_get_direction': events 1-2 | | 561 | static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off) | | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_get_direction' |...... | 564 | u8 dirreg = pca953x_recalc_addr(chip, chip->regs->direction, off); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'pca953x_gpio_get_direction' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'device_pca95xx_init': events 1-2 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 3-9 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (5) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (6) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (7) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (8) ...to here (9) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_set_multiple': events 1-2 | | 598 | static void pca953x_gpio_set_multiple(struct gpio_chip *gc, | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_set_multiple' |...... | 606 | ret = pca953x_read_regs(chip, chip->regs->output, reg_val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_read_regs' from 'pca953x_gpio_set_multiple' | +--> 'pca953x_read_regs': events 3-4 | | 480 | static int pca953x_read_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_read_regs' | 481 | { | 482 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'pca953x_read_regs' | +--> 'pca953x_recalc_addr': events 5-11 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (7) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (8) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (9) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (10) ...to here (11) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_resume': events 1-2 | | 1258 | static int pca953x_resume(struct device *dev) | | ^~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_resume' |...... | 1273 | ret = pca953x_regcache_sync(dev); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_regcache_sync' from 'pca953x_resume' | +--> 'pca953x_regcache_sync': events 3-4 | | 1195 | static int pca953x_regcache_sync(struct device *dev) | | ^~~~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_regcache_sync' |...... | 1205 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'pca953x_regcache_sync' | +--> 'pca953x_recalc_addr': events 5-11 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (7) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (8) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (9) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (10) ...to here (11) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_get_multiple': events 1-2 | | 581 | static int pca953x_gpio_get_multiple(struct gpio_chip *gc, | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_get_multiple' |...... | 589 | ret = pca953x_read_regs(chip, chip->regs->input, reg_val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_read_regs' from 'pca953x_gpio_get_multiple' | +--> 'pca953x_read_regs': events 3-4 | | 480 | static int pca953x_read_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_read_regs' | 481 | { | 482 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'pca953x_read_regs' | +--> 'pca953x_recalc_addr': events 5-11 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (7) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (8) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (9) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (10) ...to here (11) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'device_pca957x_init': events 1-2 | | 1009 | static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'device_pca957x_init' |...... | 1015 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'device_pca95xx_init' from 'device_pca957x_init' | +--> 'device_pca95xx_init': events 3-4 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 5-11 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (7) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (8) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (9) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (10) ...to here (11) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_probe': events 1-12 | | 1032 | static int pca953x_probe(struct i2c_client *client, | | ^~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_probe' |...... | 1044 | if (chip == NULL) | | ~ | | | | | (2) following 'false' branch... |...... | 1047 | pdata = dev_get_platdata(&client->dev); | | ~~~~~ | | | | | (3) ...to here |...... | 1075 | if (IS_ERR(reg)) | | ~ | | | | | (4) following 'false' branch... |...... | 1078 | ret = regulator_enable(reg); | | ~~~ | | | | | (5) ...to here | 1079 | if (ret) { | | ~ | | | | | (6) following 'false' branch (when 'ret == 0')... |...... | 1083 | chip->regulator = reg; | | ~~~~ | | | | | (7) ...to here |...... | 1112 | if (IS_ERR(chip->regmap)) { | | ~ | | | | | (8) following 'false' branch... |...... | 1117 | regcache_mark_dirty(chip->regmap); | | ~~~~~~~~~~~~~~~~~~~ | | | | | (9) ...to here |...... | 1142 | if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { | | ~ | | | | | (10) following 'false' branch... |...... | 1146 | chip->regs = &pca953x_regs; | | ~~~~ | | | | | (11) ...to here | 1147 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (12) calling 'device_pca95xx_init' from 'pca953x_probe' | +--> 'device_pca95xx_init': events 13-14 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 15-21 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (15) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (16) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (17) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (18) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (19) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (20) ...to here (21) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_probe': events 1-12 | | 1032 | static int pca953x_probe(struct i2c_client *client, | | ^~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_probe' |...... | 1044 | if (chip == NULL) | | ~ | | | | | (2) following 'false' branch... |...... | 1047 | pdata = dev_get_platdata(&client->dev); | | ~~~~~ | | | | | (3) ...to here |...... | 1075 | if (IS_ERR(reg)) | | ~ | | | | | (4) following 'false' branch... |...... | 1078 | ret = regulator_enable(reg); | | ~~~ | | | | | (5) ...to here | 1079 | if (ret) { | | ~ | | | | | (6) following 'false' branch (when 'ret == 0')... |...... | 1083 | chip->regulator = reg; | | ~~~~ | | | | | (7) ...to here |...... | 1112 | if (IS_ERR(chip->regmap)) { | | ~ | | | | | (8) following 'false' branch... |...... | 1117 | regcache_mark_dirty(chip->regmap); | | ~~~~~~~~~~~~~~~~~~~ | | | | | (9) ...to here |...... | 1142 | if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { | | ~ | | | | | (10) following 'true' branch... | 1143 | chip->regs = &pca957x_regs; | | ~~~~ | | | | | (11) ...to here | 1144 | ret = device_pca957x_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (12) calling 'device_pca957x_init' from 'pca953x_probe' | +--> 'device_pca957x_init': events 13-14 | | 1009 | static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to 'device_pca957x_init' |...... | 1015 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'device_pca95xx_init' from 'device_pca957x_init' | +--> 'device_pca95xx_init': events 15-16 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (15) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (16) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 17-23 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (17) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (18) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (19) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (20) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (21) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (22) ...to here (23) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'device_pca95xx_init': events 1-2 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 3-4 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (4) region created on stack here | <------+ | 'device_pca95xx_init': events 5-8 | | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (5) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 989 | if (ret) | | ~ | | | | | (6) following 'false' branch (when 'ret == 0')... |...... | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (8) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | | (7) ...to here | +--> 'pca953x_recalc_addr': events 9-10 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (9) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (10) region created on stack here | <------+ | 'device_pca95xx_init': events 11-14 | | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (11) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 995 | if (ret) | | ~ | | | | | (12) following 'false' branch (when 'ret == 0')... |...... | 999 | if (invert) | | ~~ | | | | | (13) ...to here |...... | 1004 | ret = pca953x_write_regs(chip, chip->regs->invert, val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'pca953x_write_regs' from 'device_pca95xx_init' | +--> 'pca953x_write_regs': events 15-16 | | 462 | static int pca953x_write_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~~ | | | | | (15) entry to 'pca953x_write_regs' | 463 | { | 464 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (16) calling 'pca953x_recalc_addr' from 'pca953x_write_regs' | +--> 'pca953x_recalc_addr': events 17-23 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (17) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (18) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (19) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (20) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (21) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (22) ...to here (23) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_gpio_set_multiple': events 1-2 | | 598 | static void pca953x_gpio_set_multiple(struct gpio_chip *gc, | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_gpio_set_multiple' |...... | 606 | ret = pca953x_read_regs(chip, chip->regs->output, reg_val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'pca953x_read_regs' from 'pca953x_gpio_set_multiple' | +--> 'pca953x_read_regs': events 3-4 | | 480 | static int pca953x_read_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'pca953x_read_regs' | 481 | { | 482 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'pca953x_read_regs' | +--> 'pca953x_recalc_addr': events 5-6 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here | <------+ | 'pca953x_read_regs': event 7 | | 482 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (7) returning to 'pca953x_read_regs' from 'pca953x_recalc_addr' | <------+ | 'pca953x_gpio_set_multiple': events 8-11 | | 606 | ret = pca953x_read_regs(chip, chip->regs->output, reg_val); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (8) returning to 'pca953x_gpio_set_multiple' from 'pca953x_read_regs' | 607 | if (ret) | | ~ | | | | | (9) following 'false' branch (when 'ret == 0')... |...... | 610 | bitmap_replace(reg_val, reg_val, bits, mask, gc->ngpio); | | ~~~~~~~~~~~~~~ | | | | | (10) ...to here | 611 | | 612 | pca953x_write_regs(chip, chip->regs->output, reg_val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (11) calling 'pca953x_write_regs' from 'pca953x_gpio_set_multiple' | +--> 'pca953x_write_regs': events 12-13 | | 462 | static int pca953x_write_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~~ | | | | | (12) entry to 'pca953x_write_regs' | 463 | { | 464 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (13) calling 'pca953x_recalc_addr' from 'pca953x_write_regs' | +--> 'pca953x_recalc_addr': events 14-20 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (14) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (15) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (16) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (17) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (18) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (19) ...to here (20) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'device_pca957x_init': events 1-2 | | 1009 | static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (1) entry to 'device_pca957x_init' |...... | 1015 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (2) calling 'device_pca95xx_init' from 'device_pca957x_init' | +--> 'device_pca95xx_init': events 3-4 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (3) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 5-6 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (5) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (6) region created on stack here | <------+ | 'device_pca95xx_init': events 7-10 | | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (7) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 989 | if (ret) | | ~ | | | | | (8) following 'false' branch (when 'ret == 0')... |...... | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (10) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | | (9) ...to here | +--> 'pca953x_recalc_addr': events 11-12 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (11) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (12) region created on stack here | <------+ | 'device_pca95xx_init': events 13-16 | | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (13) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 995 | if (ret) | | ~ | | | | | (14) following 'false' branch (when 'ret == 0')... |...... | 999 | if (invert) | | ~~ | | | | | (15) ...to here |...... | 1004 | ret = pca953x_write_regs(chip, chip->regs->invert, val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (16) calling 'pca953x_write_regs' from 'device_pca95xx_init' | +--> 'pca953x_write_regs': events 17-18 | | 462 | static int pca953x_write_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~~ | | | | | (17) entry to 'pca953x_write_regs' | 463 | { | 464 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (18) calling 'pca953x_recalc_addr' from 'pca953x_write_regs' | +--> 'pca953x_recalc_addr': events 19-25 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (19) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (20) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (21) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (22) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (23) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (24) ...to here (25) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_probe': events 1-12 | | 1032 | static int pca953x_probe(struct i2c_client *client, | | ^~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_probe' |...... | 1044 | if (chip == NULL) | | ~ | | | | | (2) following 'false' branch... |...... | 1047 | pdata = dev_get_platdata(&client->dev); | | ~~~~~ | | | | | (3) ...to here |...... | 1075 | if (IS_ERR(reg)) | | ~ | | | | | (4) following 'false' branch... |...... | 1078 | ret = regulator_enable(reg); | | ~~~ | | | | | (5) ...to here | 1079 | if (ret) { | | ~ | | | | | (6) following 'false' branch (when 'ret == 0')... |...... | 1083 | chip->regulator = reg; | | ~~~~ | | | | | (7) ...to here |...... | 1112 | if (IS_ERR(chip->regmap)) { | | ~ | | | | | (8) following 'false' branch... |...... | 1117 | regcache_mark_dirty(chip->regmap); | | ~~~~~~~~~~~~~~~~~~~ | | | | | (9) ...to here |...... | 1142 | if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { | | ~ | | | | | (10) following 'false' branch... |...... | 1146 | chip->regs = &pca953x_regs; | | ~~~~ | | | | | (11) ...to here | 1147 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (12) calling 'device_pca95xx_init' from 'pca953x_probe' | +--> 'device_pca95xx_init': events 13-14 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 15-16 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (15) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (16) region created on stack here | <------+ | 'device_pca95xx_init': events 17-20 | | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (17) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 989 | if (ret) | | ~ | | | | | (18) following 'false' branch (when 'ret == 0')... |...... | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | | | (20) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | | (19) ...to here | +--> 'pca953x_recalc_addr': events 21-22 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (21) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (22) region created on stack here | <------+ | 'device_pca95xx_init': events 23-26 | | 992 | regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (23) returning to 'device_pca95xx_init' from 'pca953x_recalc_addr' |...... | 995 | if (ret) | | ~ | | | | | (24) following 'false' branch (when 'ret == 0')... |...... | 999 | if (invert) | | ~~ | | | | | (25) ...to here |...... | 1004 | ret = pca953x_write_regs(chip, chip->regs->invert, val); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (26) calling 'pca953x_write_regs' from 'device_pca95xx_init' | +--> 'pca953x_write_regs': events 27-28 | | 462 | static int pca953x_write_regs(struct pca953x_chip *chip, int reg, unsigned long *val) | | ^~~~~~~~~~~~~~~~~~ | | | | | (27) entry to 'pca953x_write_regs' | 463 | { | 464 | u8 regaddr = pca953x_recalc_addr(chip, reg, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (28) calling 'pca953x_recalc_addr' from 'pca953x_write_regs' | +--> 'pca953x_recalc_addr': events 29-35 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (29) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (30) region created on stack here |...... | 427 | if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { | | ~ | | | | | (31) following 'true' branch... |...... | 431 | addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); | | ~~~~ | | | | | (32) ...to here | 432 | | 433 | switch(reg) { | | ~~~~~~ | | | | | (33) following 'default:' branch... |...... | 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | | ~~~~~~~ ~~~~~~~~~~~~~~ | | | | | | (34) ...to here (35) use of uninitialized value 'pinctrl' here | >> drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value >> 'pinctrl' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 451 | regaddr = pinctrl + addr + (off / BANK_SZ); | ~~~~~~~~^~~~~~ 'pca953x_probe': events 1-12 | | 1032 | static int pca953x_probe(struct i2c_client *client, | | ^~~~~~~~~~~~~ | | | | | (1) entry to 'pca953x_probe' |...... | 1044 | if (chip == NULL) | | ~ | | | | | (2) following 'false' branch... |...... | 1047 | pdata = dev_get_platdata(&client->dev); | | ~~~~~ | | | | | (3) ...to here |...... | 1075 | if (IS_ERR(reg)) | | ~ | | | | | (4) following 'false' branch... |...... | 1078 | ret = regulator_enable(reg); | | ~~~ | | | | | (5) ...to here | 1079 | if (ret) { | | ~ | | | | | (6) following 'false' branch (when 'ret == 0')... |...... | 1083 | chip->regulator = reg; | | ~~~~ | | | | | (7) ...to here |...... | 1112 | if (IS_ERR(chip->regmap)) { | | ~ | | | | | (8) following 'false' branch... |...... | 1117 | regcache_mark_dirty(chip->regmap); | | ~~~~~~~~~~~~~~~~~~~ | | | | | (9) ...to here |...... | 1142 | if (PCA_CHIP_TYPE(chip->driver_data) == PCA957X_TYPE) { | | ~ | | | | | (10) following 'true' branch... | 1143 | chip->regs = &pca957x_regs; | | ~~~~ | | | | | (11) ...to here | 1144 | ret = device_pca957x_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (12) calling 'device_pca957x_init' from 'pca953x_probe' | +--> 'device_pca957x_init': events 13-14 | | 1009 | static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (13) entry to 'device_pca957x_init' |...... | 1015 | ret = device_pca95xx_init(chip, invert); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (14) calling 'device_pca95xx_init' from 'device_pca957x_init' | +--> 'device_pca95xx_init': events 15-16 | | 980 | static int device_pca95xx_init(struct pca953x_chip *chip, u32 invert) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (15) entry to 'device_pca95xx_init' |...... | 986 | regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (16) calling 'pca953x_recalc_addr' from 'device_pca95xx_init' | +--> 'pca953x_recalc_addr': events 17-18 | | 421 | static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) | | ^~~~~~~~~~~~~~~~~~~ | | | | | (17) entry to 'pca953x_recalc_addr' |...... | 424 | int pinctrl; | | ~~~~~~~ | | | | | (18) region created on stack here | <------+ | 'device_pca95xx_init': events 19-22 vim +/pinctrl +451 drivers/gpio/gpio-pca953x.c 49427232764d62 drivers/gpio/gpio-pca953x.c Marek Vasut 2018-12-12 420 6fdeb6cbe1ef3b drivers/gpio/gpio-pca953x.c Uwe Kleine-König 2020-04-20 421 static u8 pca953x_recalc_addr(struct pca953x_chip *chip, int reg, int off) 9e60fdcf0c2905 drivers/gpio/pca9539.c eric miao 2008-02-04 422 { 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 423 int addr; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 424 int pinctrl; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 425 u8 regaddr; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 426 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 427 if (PCA_CHIP_TYPE(chip->driver_data) == PCAL653X_TYPE) { 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 428 /* The PCAL6534 and compatible chips have altered bank alignment that doesn't 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 429 * fit within the bit shifting scheme used for other devices. 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 430 */ 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 431 addr = (reg & PCAL_GPIO_MASK) * NBANK(chip); 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 432 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 433 switch(reg) { 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 434 case PCAL953X_OUT_STRENGTH: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 435 case PCAL953X_IN_LATCH: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 436 case PCAL953X_PULL_EN: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 437 case PCAL953X_PULL_SEL: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 438 case PCAL953X_INT_MASK: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 439 case PCAL953X_INT_STAT: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 440 case PCAL953X_OUT_CONF: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 441 pinctrl = ((reg & PCAL_PINCTRL_MASK) >> 1) + 0x20; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 442 break; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 443 case PCAL6524_INT_EDGE: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 444 case PCAL6524_INT_CLR: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 445 case PCAL6524_IN_STATUS: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 446 case PCAL6524_OUT_INDCONF: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 447 case PCAL6524_DEBOUNCE: 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 448 pinctrl = ((reg & PCAL_PINCTRL_MASK) >> 1) + 0x1c; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 449 break; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 450 } 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 @451 regaddr = pinctrl + addr + (off / BANK_SZ); 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 452 } else { b32cecb46bdc8b drivers/gpio/gpio-pca953x.c Marek Vasut 2018-12-12 453 int bank_shift = pca953x_bank_shift(chip); 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 454 addr = (reg & PCAL_GPIO_MASK) << bank_shift; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 455 pinctrl = (reg & PCAL_PINCTRL_MASK) << 1; 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 456 regaddr = pinctrl | addr | (off / BANK_SZ); 91a124a66bb4c2 drivers/gpio/gpio-pca953x.c Martyn Welch 2022-08-26 457 } 9e60fdcf0c2905 drivers/gpio/pca9539.c eric miao 2008-02-04 458 b32cecb46bdc8b drivers/gpio/gpio-pca953x.c Marek Vasut 2018-12-12 459 return regaddr; c6e3cf01d31d88 drivers/gpio/gpio-pca953x.c Bartosz Golaszewski 2016-09-09 460 } c6e3cf01d31d88 drivers/gpio/gpio-pca953x.c Bartosz Golaszewski 2016-09-09 461 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
