All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [martyn:pcal6534-upstreaming 6/6] drivers/gpio/gpio-pca953x.c:451:35: warning: use of uninitialized value 'pinctrl' [CWE-457]
Date: Sun, 28 Aug 2022 20:52:41 +0800	[thread overview]
Message-ID: <202208282029.ckscIO8z-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 95835 bytes --]

:::::: 
:::::: 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: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Martyn Welch <martyn.welch@collabora.com>

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/202208282029.ckscIO8z-lkp(a)intel.com/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 <lkp@intel.com>

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

                 reply	other threads:[~2022-08-28 12:52 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202208282029.ckscIO8z-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.