Skip to content

Commit cf42366

Browse files
Minghao ChiSasha Levin
authored andcommitted
power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
[ Upstream commit d96a894 ] Using pm_runtime_resume_and_get is more appropriate for simplifing code Reported-by: Zeal Robot <[email protected]> Signed-off-by: Minghao Chi <[email protected]> Signed-off-by: Sebastian Reichel <[email protected]> [ skulkarni: Minor changes in hunk gregkh#3/12 wrt the mainline commit ] Stable-dep-of: 47c29d6 ("power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition") Signed-off-by: Shubham Kulkarni <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 0bd651a commit cf42366

File tree

1 file changed

+21
-42
lines changed

1 file changed

+21
-42
lines changed

drivers/power/supply/bq24190_charger.c

Lines changed: 21 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -448,11 +448,9 @@ static ssize_t bq24190_sysfs_show(struct device *dev,
448448
if (!info)
449449
return -EINVAL;
450450

451-
ret = pm_runtime_get_sync(bdi->dev);
452-
if (ret < 0) {
453-
pm_runtime_put_noidle(bdi->dev);
451+
ret = pm_runtime_resume_and_get(bdi->dev);
452+
if (ret < 0)
454453
return ret;
455-
}
456454

457455
ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v);
458456
if (ret)
@@ -483,11 +481,9 @@ static ssize_t bq24190_sysfs_store(struct device *dev,
483481
if (ret < 0)
484482
return ret;
485483

486-
ret = pm_runtime_get_sync(bdi->dev);
487-
if (ret < 0) {
488-
pm_runtime_put_noidle(bdi->dev);
484+
ret = pm_runtime_resume_and_get(bdi->dev);
485+
if (ret < 0)
489486
return ret;
490-
}
491487

492488
ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v);
493489
if (ret)
@@ -506,10 +502,9 @@ static int bq24190_set_charge_mode(struct regulator_dev *dev, u8 val)
506502
struct bq24190_dev_info *bdi = rdev_get_drvdata(dev);
507503
int ret;
508504

509-
ret = pm_runtime_get_sync(bdi->dev);
505+
ret = pm_runtime_resume_and_get(bdi->dev);
510506
if (ret < 0) {
511507
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
512-
pm_runtime_put_noidle(bdi->dev);
513508
return ret;
514509
}
515510

@@ -539,10 +534,9 @@ static int bq24190_vbus_is_enabled(struct regulator_dev *dev)
539534
int ret;
540535
u8 val;
541536

542-
ret = pm_runtime_get_sync(bdi->dev);
537+
ret = pm_runtime_resume_and_get(bdi->dev);
543538
if (ret < 0) {
544539
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
545-
pm_runtime_put_noidle(bdi->dev);
546540
return ret;
547541
}
548542

@@ -1083,11 +1077,9 @@ static int bq24190_charger_get_property(struct power_supply *psy,
10831077

10841078
dev_dbg(bdi->dev, "prop: %d\n", psp);
10851079

1086-
ret = pm_runtime_get_sync(bdi->dev);
1087-
if (ret < 0) {
1088-
pm_runtime_put_noidle(bdi->dev);
1080+
ret = pm_runtime_resume_and_get(bdi->dev);
1081+
if (ret < 0)
10891082
return ret;
1090-
}
10911083

10921084
switch (psp) {
10931085
case POWER_SUPPLY_PROP_CHARGE_TYPE:
@@ -1157,11 +1149,9 @@ static int bq24190_charger_set_property(struct power_supply *psy,
11571149

11581150
dev_dbg(bdi->dev, "prop: %d\n", psp);
11591151

1160-
ret = pm_runtime_get_sync(bdi->dev);
1161-
if (ret < 0) {
1162-
pm_runtime_put_noidle(bdi->dev);
1152+
ret = pm_runtime_resume_and_get(bdi->dev);
1153+
if (ret < 0)
11631154
return ret;
1164-
}
11651155

11661156
switch (psp) {
11671157
case POWER_SUPPLY_PROP_ONLINE:
@@ -1431,11 +1421,9 @@ static int bq24190_battery_get_property(struct power_supply *psy,
14311421
dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
14321422
dev_dbg(bdi->dev, "prop: %d\n", psp);
14331423

1434-
ret = pm_runtime_get_sync(bdi->dev);
1435-
if (ret < 0) {
1436-
pm_runtime_put_noidle(bdi->dev);
1424+
ret = pm_runtime_resume_and_get(bdi->dev);
1425+
if (ret < 0)
14371426
return ret;
1438-
}
14391427

14401428
switch (psp) {
14411429
case POWER_SUPPLY_PROP_STATUS:
@@ -1479,11 +1467,9 @@ static int bq24190_battery_set_property(struct power_supply *psy,
14791467
dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
14801468
dev_dbg(bdi->dev, "prop: %d\n", psp);
14811469

1482-
ret = pm_runtime_get_sync(bdi->dev);
1483-
if (ret < 0) {
1484-
pm_runtime_put_noidle(bdi->dev);
1470+
ret = pm_runtime_resume_and_get(bdi->dev);
1471+
if (ret < 0)
14851472
return ret;
1486-
}
14871473

14881474
switch (psp) {
14891475
case POWER_SUPPLY_PROP_ONLINE:
@@ -1637,10 +1623,9 @@ static irqreturn_t bq24190_irq_handler_thread(int irq, void *data)
16371623
int error;
16381624

16391625
bdi->irq_event = true;
1640-
error = pm_runtime_get_sync(bdi->dev);
1626+
error = pm_runtime_resume_and_get(bdi->dev);
16411627
if (error < 0) {
16421628
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1643-
pm_runtime_put_noidle(bdi->dev);
16441629
return IRQ_NONE;
16451630
}
16461631
bq24190_check_status(bdi);
@@ -1860,11 +1845,9 @@ static int bq24190_remove(struct i2c_client *client)
18601845
struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
18611846
int error;
18621847

1863-
error = pm_runtime_get_sync(bdi->dev);
1864-
if (error < 0) {
1848+
error = pm_runtime_resume_and_get(bdi->dev);
1849+
if (error < 0)
18651850
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1866-
pm_runtime_put_noidle(bdi->dev);
1867-
}
18681851

18691852
bq24190_register_reset(bdi);
18701853
if (bdi->battery)
@@ -1913,11 +1896,9 @@ static __maybe_unused int bq24190_pm_suspend(struct device *dev)
19131896
struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
19141897
int error;
19151898

1916-
error = pm_runtime_get_sync(bdi->dev);
1917-
if (error < 0) {
1899+
error = pm_runtime_resume_and_get(bdi->dev);
1900+
if (error < 0)
19181901
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1919-
pm_runtime_put_noidle(bdi->dev);
1920-
}
19211902

19221903
bq24190_register_reset(bdi);
19231904

@@ -1938,11 +1919,9 @@ static __maybe_unused int bq24190_pm_resume(struct device *dev)
19381919
bdi->f_reg = 0;
19391920
bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */
19401921

1941-
error = pm_runtime_get_sync(bdi->dev);
1942-
if (error < 0) {
1922+
error = pm_runtime_resume_and_get(bdi->dev);
1923+
if (error < 0)
19431924
dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1944-
pm_runtime_put_noidle(bdi->dev);
1945-
}
19461925

19471926
bq24190_register_reset(bdi);
19481927
bq24190_set_config(bdi);

0 commit comments

Comments
 (0)