mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
power: supply: restore hwmon if extension update fails
power_supply_update_sysfs_and_hwmon() removes the existing hwmon group before recreating it. If recreation fails, register_extension() rolled back the extension but left hwmon absent. After tearing down the failed extension, best-effort recreate hwmon so the supply keeps its previous monitoring attributes when possible. Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com> Link: https://patch.msgid.link/20260831155339.181487-3-ivanrwcm25@gmail.com Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
2648e3d4ca
commit
c996fa11ce
|
|
@ -1595,6 +1595,16 @@ int power_supply_register_extension(struct power_supply *psy, const struct power
|
|||
|
||||
sysfs_hwmon_failed:
|
||||
power_supply_sysfs_remove_extension(psy, ext);
|
||||
list_del(®->list_head);
|
||||
kfree(reg);
|
||||
/*
|
||||
* update_sysfs_and_hwmon() may have already torn down hwmon before
|
||||
* failing to recreate it. Recreate without the failed extension.
|
||||
*/
|
||||
if (power_supply_add_hwmon_sysfs(psy))
|
||||
dev_warn(&psy->dev, "failed to restore hwmon after extension error\n");
|
||||
return ret;
|
||||
|
||||
sysfs_add_failed:
|
||||
list_del(®->list_head);
|
||||
kfree(reg);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user