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

power: supply: wm831x: Check wm831x_set_bits() return value

Since wm831x_set_bits() may return error, log failure and exit from
wm831x_usb_limit_change() in such case.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 626b6cd5f52e ("power: wm831x_power: Support USB charger current limit management")
Signed-off-by: Ivan Abramov <i.abramov@mt-integration.ru>
Link: https://patch.msgid.link/20251009170553.566561-1-i.abramov@mt-integration.ru
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>

authored by

Ivan Abramov and committed by
Sebastian Reichel
ea14bae6 15aca30c

+8 -2
+8 -2
drivers/power/supply/wm831x_power.c
··· 144 144 struct wm831x_power, 145 145 usb_notify); 146 146 unsigned int i, best; 147 + int ret; 147 148 148 149 /* Find the highest supported limit */ 149 150 best = 0; ··· 157 156 dev_dbg(wm831x_power->wm831x->dev, 158 157 "Limiting USB current to %umA", wm831x_usb_limits[best]); 159 158 160 - wm831x_set_bits(wm831x_power->wm831x, WM831X_POWER_STATE, 161 - WM831X_USB_ILIM_MASK, best); 159 + ret = wm831x_set_bits(wm831x_power->wm831x, WM831X_POWER_STATE, 160 + WM831X_USB_ILIM_MASK, best); 161 + if (ret < 0) { 162 + dev_err(wm831x_power->wm831x->dev, 163 + "Failed to set USB current limit: %d\n", ret); 164 + return ret; 165 + } 162 166 163 167 return 0; 164 168 }