power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of pm_runtime...
authorMinghao Chi <chi.minghao@zte.com.cn>
Tue, 12 Apr 2022 08:30:44 +0000 (08:30 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Mar 2023 10:47:43 +0000 (12:47 +0200)
[ Upstream commit d96a89407e5f682d1cb22569d91784506c784863 ]

Using pm_runtime_resume_and_get is more appropriate
for simplifing code

Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Stable-dep-of: 47c29d692129 ("power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/power/supply/bq24190_charger.c

index 16c4876fe5afbf4f50e775816ac5d70786f64c05..0d262fe9780ca93bb662a8248658bfb09bd6b805 100644 (file)
@@ -446,11 +446,9 @@ static ssize_t bq24190_sysfs_show(struct device *dev,
        if (!info)
                return -EINVAL;
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v);
        if (ret)
@@ -481,11 +479,9 @@ static ssize_t bq24190_sysfs_store(struct device *dev,
        if (ret < 0)
                return ret;
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v);
        if (ret)
@@ -504,10 +500,9 @@ static int bq24190_set_charge_mode(struct regulator_dev *dev, u8 val)
        struct bq24190_dev_info *bdi = rdev_get_drvdata(dev);
        int ret;
 
-       ret = pm_runtime_get_sync(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
        if (ret < 0) {
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
-               pm_runtime_put_noidle(bdi->dev);
                return ret;
        }
 
@@ -537,10 +532,9 @@ static int bq24190_vbus_is_enabled(struct regulator_dev *dev)
        int ret;
        u8 val;
 
-       ret = pm_runtime_get_sync(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
        if (ret < 0) {
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
-               pm_runtime_put_noidle(bdi->dev);
                return ret;
        }
 
@@ -1081,11 +1075,9 @@ static int bq24190_charger_get_property(struct power_supply *psy,
 
        dev_dbg(bdi->dev, "prop: %d\n", psp);
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        switch (psp) {
        case POWER_SUPPLY_PROP_CHARGE_TYPE:
@@ -1155,11 +1147,9 @@ static int bq24190_charger_set_property(struct power_supply *psy,
 
        dev_dbg(bdi->dev, "prop: %d\n", psp);
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        switch (psp) {
        case POWER_SUPPLY_PROP_ONLINE:
@@ -1418,11 +1408,9 @@ static int bq24190_battery_get_property(struct power_supply *psy,
        dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
        dev_dbg(bdi->dev, "prop: %d\n", psp);
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        switch (psp) {
        case POWER_SUPPLY_PROP_STATUS:
@@ -1466,11 +1454,9 @@ static int bq24190_battery_set_property(struct power_supply *psy,
        dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
        dev_dbg(bdi->dev, "prop: %d\n", psp);
 
-       ret = pm_runtime_get_sync(bdi->dev);
-       if (ret < 0) {
-               pm_runtime_put_noidle(bdi->dev);
+       ret = pm_runtime_resume_and_get(bdi->dev);
+       if (ret < 0)
                return ret;
-       }
 
        switch (psp) {
        case POWER_SUPPLY_PROP_ONLINE:
@@ -1624,10 +1610,9 @@ static irqreturn_t bq24190_irq_handler_thread(int irq, void *data)
        int error;
 
        bdi->irq_event = true;
-       error = pm_runtime_get_sync(bdi->dev);
+       error = pm_runtime_resume_and_get(bdi->dev);
        if (error < 0) {
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
-               pm_runtime_put_noidle(bdi->dev);
                return IRQ_NONE;
        }
        bq24190_check_status(bdi);
@@ -1847,11 +1832,9 @@ static int bq24190_remove(struct i2c_client *client)
        struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
        int error;
 
-       error = pm_runtime_get_sync(bdi->dev);
-       if (error < 0) {
+       error = pm_runtime_resume_and_get(bdi->dev);
+       if (error < 0)
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
-               pm_runtime_put_noidle(bdi->dev);
-       }
 
        bq24190_register_reset(bdi);
        if (bdi->battery)
@@ -1900,11 +1883,9 @@ static __maybe_unused int bq24190_pm_suspend(struct device *dev)
        struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
        int error;
 
-       error = pm_runtime_get_sync(bdi->dev);
-       if (error < 0) {
+       error = pm_runtime_resume_and_get(bdi->dev);
+       if (error < 0)
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
-               pm_runtime_put_noidle(bdi->dev);
-       }
 
        bq24190_register_reset(bdi);
 
@@ -1925,11 +1906,9 @@ static __maybe_unused int bq24190_pm_resume(struct device *dev)
        bdi->f_reg = 0;
        bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */
 
-       error = pm_runtime_get_sync(bdi->dev);
-       if (error < 0) {
+       error = pm_runtime_resume_and_get(bdi->dev);
+       if (error < 0)
                dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
-               pm_runtime_put_noidle(bdi->dev);
-       }
 
        bq24190_register_reset(bdi);
        bq24190_set_config(bdi);