drivers/power/supply/bd71828-power.c:469 bd71828_battery_get_property() error: uninitialized symbol 'tmp'.

From: Dan Carpenter
Date: Tue Dec 16 2025 - 09:49:04 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
commit: 5bff79dad20a51fed3ff6d78f6b60321cd145a99 power: supply: Add bd718(15/28/78) charger driver
config: openrisc-randconfig-r071-20251214 (https://download.01.org/0day-ci/archive/20251216/202512161012.YCn72zq9-lkp@xxxxxxxxx/config)
compiler: or1k-linux-gcc (GCC) 15.1.0

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 <dan.carpenter@xxxxxxxxxx>
| Closes: https://lore.kernel.org/r/202512161012.YCn72zq9-lkp@xxxxxxxxx/

smatch warnings:
drivers/power/supply/bd71828-power.c:469 bd71828_battery_get_property() error: uninitialized symbol 'tmp'.

vim +/tmp +469 drivers/power/supply/bd71828-power.c

5bff79dad20a51 Andreas Kemnade 2025-09-18 437 static int bd71828_battery_get_property(struct power_supply *psy,
5bff79dad20a51 Andreas Kemnade 2025-09-18 438 enum power_supply_property psp,
5bff79dad20a51 Andreas Kemnade 2025-09-18 439 union power_supply_propval *val)
5bff79dad20a51 Andreas Kemnade 2025-09-18 440 {
5bff79dad20a51 Andreas Kemnade 2025-09-18 441 struct bd71828_power *pwr = dev_get_drvdata(psy->dev.parent);
5bff79dad20a51 Andreas Kemnade 2025-09-18 442 int ret = 0;
5bff79dad20a51 Andreas Kemnade 2025-09-18 443 int status, health, tmp, curr, curr_avg, chg_en;
5bff79dad20a51 Andreas Kemnade 2025-09-18 444
5bff79dad20a51 Andreas Kemnade 2025-09-18 445 if (psp == POWER_SUPPLY_PROP_STATUS ||
5bff79dad20a51 Andreas Kemnade 2025-09-18 446 psp == POWER_SUPPLY_PROP_HEALTH ||
5bff79dad20a51 Andreas Kemnade 2025-09-18 447 psp == POWER_SUPPLY_PROP_CHARGE_TYPE)
5bff79dad20a51 Andreas Kemnade 2025-09-18 448 ret = bd71828_charge_status(pwr, &status, &health);
5bff79dad20a51 Andreas Kemnade 2025-09-18 449 else if (psp == POWER_SUPPLY_PROP_CURRENT_AVG ||
5bff79dad20a51 Andreas Kemnade 2025-09-18 450 psp == POWER_SUPPLY_PROP_CURRENT_NOW)
5bff79dad20a51 Andreas Kemnade 2025-09-18 451 ret = bd71828_get_current_ds_adc(pwr, &curr, &curr_avg);
5bff79dad20a51 Andreas Kemnade 2025-09-18 452 if (ret)
5bff79dad20a51 Andreas Kemnade 2025-09-18 453 return ret;
5bff79dad20a51 Andreas Kemnade 2025-09-18 454
5bff79dad20a51 Andreas Kemnade 2025-09-18 455 switch (psp) {
5bff79dad20a51 Andreas Kemnade 2025-09-18 456 case POWER_SUPPLY_PROP_STATUS:
5bff79dad20a51 Andreas Kemnade 2025-09-18 457 val->intval = status;
5bff79dad20a51 Andreas Kemnade 2025-09-18 458 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 459 case POWER_SUPPLY_PROP_HEALTH:
5bff79dad20a51 Andreas Kemnade 2025-09-18 460 val->intval = health;
5bff79dad20a51 Andreas Kemnade 2025-09-18 461 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 462 case POWER_SUPPLY_PROP_PRESENT:
5bff79dad20a51 Andreas Kemnade 2025-09-18 463 ret = get_bat_online(pwr, &tmp);
5bff79dad20a51 Andreas Kemnade 2025-09-18 464 if (!ret)
5bff79dad20a51 Andreas Kemnade 2025-09-18 465 val->intval = tmp;
5bff79dad20a51 Andreas Kemnade 2025-09-18 466 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 467 case POWER_SUPPLY_PROP_VOLTAGE_NOW:
5bff79dad20a51 Andreas Kemnade 2025-09-18 468 ret = bd71828_get_vbat(pwr, &tmp);
5bff79dad20a51 Andreas Kemnade 2025-09-18 @469 val->intval = tmp;

Smatch complains that we don't check until ret after we assign the
uninitialized variable.

5bff79dad20a51 Andreas Kemnade 2025-09-18 470 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 471 case POWER_SUPPLY_PROP_TECHNOLOGY:
5bff79dad20a51 Andreas Kemnade 2025-09-18 472 val->intval = POWER_SUPPLY_TECHNOLOGY_LION;
5bff79dad20a51 Andreas Kemnade 2025-09-18 473 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 474 case POWER_SUPPLY_PROP_CURRENT_AVG:
5bff79dad20a51 Andreas Kemnade 2025-09-18 475 val->intval = curr_avg;
5bff79dad20a51 Andreas Kemnade 2025-09-18 476 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 477 case POWER_SUPPLY_PROP_CURRENT_NOW:
5bff79dad20a51 Andreas Kemnade 2025-09-18 478 val->intval = curr;
5bff79dad20a51 Andreas Kemnade 2025-09-18 479 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 480 case POWER_SUPPLY_PROP_CURRENT_MAX:
5bff79dad20a51 Andreas Kemnade 2025-09-18 481 val->intval = MAX_CURRENT_DEFAULT;
5bff79dad20a51 Andreas Kemnade 2025-09-18 482 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 483 case POWER_SUPPLY_PROP_TEMP:
5bff79dad20a51 Andreas Kemnade 2025-09-18 484 ret = pwr->get_temp(pwr, &val->intval);
5bff79dad20a51 Andreas Kemnade 2025-09-18 485 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 486 case POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR:
5bff79dad20a51 Andreas Kemnade 2025-09-18 487 ret = regmap_read(pwr->regmap, pwr->regs->chg_en, &chg_en);
5bff79dad20a51 Andreas Kemnade 2025-09-18 488 if (ret)
5bff79dad20a51 Andreas Kemnade 2025-09-18 489 return ret;
5bff79dad20a51 Andreas Kemnade 2025-09-18 490
5bff79dad20a51 Andreas Kemnade 2025-09-18 491 val->intval = (chg_en & BD7182x_MASK_CHG_EN) ?
5bff79dad20a51 Andreas Kemnade 2025-09-18 492 POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO :
5bff79dad20a51 Andreas Kemnade 2025-09-18 493 POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE;
5bff79dad20a51 Andreas Kemnade 2025-09-18 494 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 495 default:
5bff79dad20a51 Andreas Kemnade 2025-09-18 496 ret = -EINVAL;
5bff79dad20a51 Andreas Kemnade 2025-09-18 497 break;
5bff79dad20a51 Andreas Kemnade 2025-09-18 498 }
5bff79dad20a51 Andreas Kemnade 2025-09-18 499
5bff79dad20a51 Andreas Kemnade 2025-09-18 500 return ret;
5bff79dad20a51 Andreas Kemnade 2025-09-18 501 }

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