Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'for-v4.7-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply

Pull power supply fixes from Sebastian Reichel.

* tag 'for-v4.7-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
power_supply: tps65217-charger: Fix NULL deref during property export
power_supply: power_supply_read_temp only if use_cnt > 0

+21 -12
+16 -11
drivers/power/power_supply_core.c
··· 565 565 566 566 WARN_ON(tzd == NULL); 567 567 psy = tzd->devdata; 568 - ret = psy->desc->get_property(psy, POWER_SUPPLY_PROP_TEMP, &val); 568 + ret = power_supply_get_property(psy, POWER_SUPPLY_PROP_TEMP, &val); 569 + if (ret) 570 + return ret; 569 571 570 572 /* Convert tenths of degree Celsius to milli degree Celsius. */ 571 - if (!ret) 572 - *temp = val.intval * 100; 573 + *temp = val.intval * 100; 573 574 574 575 return ret; 575 576 } ··· 613 612 int ret; 614 613 615 614 psy = tcd->devdata; 616 - ret = psy->desc->get_property(psy, 617 - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX, &val); 618 - if (!ret) 619 - *state = val.intval; 615 + ret = power_supply_get_property(psy, 616 + POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX, &val); 617 + if (ret) 618 + return ret; 619 + 620 + *state = val.intval; 620 621 621 622 return ret; 622 623 } ··· 631 628 int ret; 632 629 633 630 psy = tcd->devdata; 634 - ret = psy->desc->get_property(psy, 635 - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, &val); 636 - if (!ret) 637 - *state = val.intval; 631 + ret = power_supply_get_property(psy, 632 + POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, &val); 633 + if (ret) 634 + return ret; 635 + 636 + *state = val.intval; 638 637 639 638 return ret; 640 639 }
+5 -1
drivers/power/tps65217_charger.c
··· 197 197 { 198 198 struct tps65217 *tps = dev_get_drvdata(pdev->dev.parent); 199 199 struct tps65217_charger *charger; 200 + struct power_supply_config cfg = {}; 200 201 int ret; 201 202 202 203 dev_dbg(&pdev->dev, "%s\n", __func__); ··· 209 208 charger->tps = tps; 210 209 charger->dev = &pdev->dev; 211 210 211 + cfg.of_node = pdev->dev.of_node; 212 + cfg.drv_data = charger; 213 + 212 214 charger->ac = devm_power_supply_register(&pdev->dev, 213 215 &tps65217_charger_desc, 214 - NULL); 216 + &cfg); 215 217 if (IS_ERR(charger->ac)) { 216 218 dev_err(&pdev->dev, "failed: power supply register\n"); 217 219 return PTR_ERR(charger->ac);