drivers/power/supply/qcom_pmi8998_charger.c:565 smb2_status_change_work() error: uninitialized symbol 'usb_online'.

From: kernel test robot
Date: Fri Jul 28 2023 - 01:46:07 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 57012c57536f8814dec92e74197ee96c3498d24e
commit: 8648aeb5d7b70e13264ff5f444f22081d37d4670 power: supply: add Qualcomm PMI8998 SMB2 Charger driver
config: arm-randconfig-m041-20230727 (https://download.01.org/0day-ci/archive/20230728/202307280638.556PrzIS-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230728/202307280638.556PrzIS-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <error27@xxxxxxxxx>
| Closes: https://lore.kernel.org/r/202307280638.556PrzIS-lkp@xxxxxxxxx/

smatch warnings:
drivers/power/supply/qcom_pmi8998_charger.c:565 smb2_status_change_work() error: uninitialized symbol 'usb_online'.

vim +/usb_online +565 drivers/power/supply/qcom_pmi8998_charger.c

8648aeb5d7b70e Caleb Connolly 2023-05-26 556 static void smb2_status_change_work(struct work_struct *work)
8648aeb5d7b70e Caleb Connolly 2023-05-26 557 {
8648aeb5d7b70e Caleb Connolly 2023-05-26 558 unsigned int charger_type, current_ua;
8648aeb5d7b70e Caleb Connolly 2023-05-26 559 int usb_online, count, rc;
8648aeb5d7b70e Caleb Connolly 2023-05-26 560 struct smb2_chip *chip;
8648aeb5d7b70e Caleb Connolly 2023-05-26 561
8648aeb5d7b70e Caleb Connolly 2023-05-26 562 chip = container_of(work, struct smb2_chip, status_change_work.work);
8648aeb5d7b70e Caleb Connolly 2023-05-26 563
8648aeb5d7b70e Caleb Connolly 2023-05-26 564 smb2_get_prop_usb_online(chip, &usb_online);

This can only happen if regmap_read() fails, and in real life they
can't actually fail can they? We can't really recover if regmap
breaks so in that situation this uninitialized variable would be the
least of our concerns. Right?

So what I could do is just delete the regmap_read error paths from
the DB. I just add these two lines to smatch_data/db/kernel.delete.return_states

regmap_read (-22)
regmap_read (-4095)-(-1)

8648aeb5d7b70e Caleb Connolly 2023-05-26 @565 if (!usb_online)
^^^^^^^^^^

8648aeb5d7b70e Caleb Connolly 2023-05-26 566 return;
8648aeb5d7b70e Caleb Connolly 2023-05-26 567
8648aeb5d7b70e Caleb Connolly 2023-05-26 568 for (count = 0; count < 3; count++) {
8648aeb5d7b70e Caleb Connolly 2023-05-26 569 dev_dbg(chip->dev, "get charger type retry %d\n", count);

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki