]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
68b8e7f90ec737b9a57ead6642dc906fd407af5b
[thirdparty/kernel/stable-queue.git] /
1 From stable+bounces-163574-greg=kroah.com@vger.kernel.org Mon Jul 21 13:49:34 2025
2 From: skulkarni@mvista.com
3 Date: Mon, 21 Jul 2025 17:18:45 +0530
4 Subject: power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
5 To: stable@vger.kernel.org
6 Cc: Minghao Chi <chi.minghao@zte.com.cn>, Zeal Robot <zealci@zte.com.cn>, Sebastian Reichel <sebastian.reichel@collabora.com>, Shubham Kulkarni <skulkarni@mvista.com>
7 Message-ID: <20250721114846.1360952-3-skulkarni@mvista.com>
8
9 From: Minghao Chi <chi.minghao@zte.com.cn>
10
11 [ Upstream commit d96a89407e5f682d1cb22569d91784506c784863 ]
12
13 Using pm_runtime_resume_and_get is more appropriate
14 for simplifing code
15
16 Reported-by: Zeal Robot <zealci@zte.com.cn>
17 Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
18 Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
19 [ skulkarni: Minor changes in hunk #3/12 wrt the mainline commit ]
20 Stable-dep-of: 47c29d692129 ("power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition")
21 Signed-off-by: Shubham Kulkarni <skulkarni@mvista.com>
22 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23 ---
24 drivers/power/supply/bq24190_charger.c | 63 +++++++++++----------------------
25 1 file changed, 21 insertions(+), 42 deletions(-)
26
27 --- a/drivers/power/supply/bq24190_charger.c
28 +++ b/drivers/power/supply/bq24190_charger.c
29 @@ -448,11 +448,9 @@ static ssize_t bq24190_sysfs_show(struct
30 if (!info)
31 return -EINVAL;
32
33 - ret = pm_runtime_get_sync(bdi->dev);
34 - if (ret < 0) {
35 - pm_runtime_put_noidle(bdi->dev);
36 + ret = pm_runtime_resume_and_get(bdi->dev);
37 + if (ret < 0)
38 return ret;
39 - }
40
41 ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v);
42 if (ret)
43 @@ -483,11 +481,9 @@ static ssize_t bq24190_sysfs_store(struc
44 if (ret < 0)
45 return ret;
46
47 - ret = pm_runtime_get_sync(bdi->dev);
48 - if (ret < 0) {
49 - pm_runtime_put_noidle(bdi->dev);
50 + ret = pm_runtime_resume_and_get(bdi->dev);
51 + if (ret < 0)
52 return ret;
53 - }
54
55 ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v);
56 if (ret)
57 @@ -506,10 +502,9 @@ static int bq24190_set_charge_mode(struc
58 struct bq24190_dev_info *bdi = rdev_get_drvdata(dev);
59 int ret;
60
61 - ret = pm_runtime_get_sync(bdi->dev);
62 + ret = pm_runtime_resume_and_get(bdi->dev);
63 if (ret < 0) {
64 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
65 - pm_runtime_put_noidle(bdi->dev);
66 return ret;
67 }
68
69 @@ -539,10 +534,9 @@ static int bq24190_vbus_is_enabled(struc
70 int ret;
71 u8 val;
72
73 - ret = pm_runtime_get_sync(bdi->dev);
74 + ret = pm_runtime_resume_and_get(bdi->dev);
75 if (ret < 0) {
76 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
77 - pm_runtime_put_noidle(bdi->dev);
78 return ret;
79 }
80
81 @@ -1083,11 +1077,9 @@ static int bq24190_charger_get_property(
82
83 dev_dbg(bdi->dev, "prop: %d\n", psp);
84
85 - ret = pm_runtime_get_sync(bdi->dev);
86 - if (ret < 0) {
87 - pm_runtime_put_noidle(bdi->dev);
88 + ret = pm_runtime_resume_and_get(bdi->dev);
89 + if (ret < 0)
90 return ret;
91 - }
92
93 switch (psp) {
94 case POWER_SUPPLY_PROP_CHARGE_TYPE:
95 @@ -1157,11 +1149,9 @@ static int bq24190_charger_set_property(
96
97 dev_dbg(bdi->dev, "prop: %d\n", psp);
98
99 - ret = pm_runtime_get_sync(bdi->dev);
100 - if (ret < 0) {
101 - pm_runtime_put_noidle(bdi->dev);
102 + ret = pm_runtime_resume_and_get(bdi->dev);
103 + if (ret < 0)
104 return ret;
105 - }
106
107 switch (psp) {
108 case POWER_SUPPLY_PROP_ONLINE:
109 @@ -1431,11 +1421,9 @@ static int bq24190_battery_get_property(
110 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
111 dev_dbg(bdi->dev, "prop: %d\n", psp);
112
113 - ret = pm_runtime_get_sync(bdi->dev);
114 - if (ret < 0) {
115 - pm_runtime_put_noidle(bdi->dev);
116 + ret = pm_runtime_resume_and_get(bdi->dev);
117 + if (ret < 0)
118 return ret;
119 - }
120
121 switch (psp) {
122 case POWER_SUPPLY_PROP_STATUS:
123 @@ -1479,11 +1467,9 @@ static int bq24190_battery_set_property(
124 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
125 dev_dbg(bdi->dev, "prop: %d\n", psp);
126
127 - ret = pm_runtime_get_sync(bdi->dev);
128 - if (ret < 0) {
129 - pm_runtime_put_noidle(bdi->dev);
130 + ret = pm_runtime_resume_and_get(bdi->dev);
131 + if (ret < 0)
132 return ret;
133 - }
134
135 switch (psp) {
136 case POWER_SUPPLY_PROP_ONLINE:
137 @@ -1637,10 +1623,9 @@ static irqreturn_t bq24190_irq_handler_t
138 int error;
139
140 bdi->irq_event = true;
141 - error = pm_runtime_get_sync(bdi->dev);
142 + error = pm_runtime_resume_and_get(bdi->dev);
143 if (error < 0) {
144 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
145 - pm_runtime_put_noidle(bdi->dev);
146 return IRQ_NONE;
147 }
148 bq24190_check_status(bdi);
149 @@ -1860,11 +1845,9 @@ static int bq24190_remove(struct i2c_cli
150 struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
151 int error;
152
153 - error = pm_runtime_get_sync(bdi->dev);
154 - if (error < 0) {
155 + error = pm_runtime_resume_and_get(bdi->dev);
156 + if (error < 0)
157 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
158 - pm_runtime_put_noidle(bdi->dev);
159 - }
160
161 bq24190_register_reset(bdi);
162 if (bdi->battery)
163 @@ -1913,11 +1896,9 @@ static __maybe_unused int bq24190_pm_sus
164 struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
165 int error;
166
167 - error = pm_runtime_get_sync(bdi->dev);
168 - if (error < 0) {
169 + error = pm_runtime_resume_and_get(bdi->dev);
170 + if (error < 0)
171 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
172 - pm_runtime_put_noidle(bdi->dev);
173 - }
174
175 bq24190_register_reset(bdi);
176
177 @@ -1938,11 +1919,9 @@ static __maybe_unused int bq24190_pm_res
178 bdi->f_reg = 0;
179 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */
180
181 - error = pm_runtime_get_sync(bdi->dev);
182 - if (error < 0) {
183 + error = pm_runtime_resume_and_get(bdi->dev);
184 + if (error < 0)
185 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
186 - pm_runtime_put_noidle(bdi->dev);
187 - }
188
189 bq24190_register_reset(bdi);
190 bq24190_set_config(bdi);