linux/drivers/power/supply
Krzysztof Kozlowski 8a241df8cf power: supply: max77705: Fix potential IRQ chip conflict when probing two devices
commit 1cb053ea2e upstream.

MAX77705 charger is most likely always a single device on the board,
however nothing stops board designers to have two of them, thus same
device driver could probe twice. Or user could manually try to probing
second time.

Device driver is not ready for that case, because it allocates
statically 'struct regmap_irq_chip' as non-const and stores during
probe in 'irq_drv_data' member a pointer to per-probe state
container ('struct max77705_charger_data').  devm_regmap_add_irq_chip()
does not make a copy of 'struct regmap_irq_chip' but stores the pointer.

Second probe - either successful or failure - would overwrite the
'irq_drv_data' from previous device probe, so interrupts would be
executed in a wrong context.

Fixes: a6a494c8e3 ("power: supply: max77705: Add charger driver for Maxim 77705")
Cc: stable@vger.kernel.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://patch.msgid.link/20251023102905.71535-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-08 10:17:02 +01:00
..
88pm860x_battery.c power: supply: Use str_enable_disable-like helpers 2025-01-15 21:41:22 +01:00
88pm860x_charger.c power: supply: 88pm860x: make fsm_state array static const, simplify usage 2025-09-06 23:24:23 +02:00
ab8500-bm.h power: supply: ab8500: Standardize BTI resistance 2022-02-28 11:34:31 +01:00
ab8500-chargalg.h power: supply: ab8500: Drop external charger leftovers 2022-07-17 00:51:35 +02:00
ab8500_bmdata.c power: supply: ab8500: constify ocv table 2024-10-15 22:14:12 +02:00
ab8500_btemp.c power: supply: WQ_PERCPU added to alloc_workqueue users 2025-09-09 00:53:46 +02:00
ab8500_chargalg.c power: supply: ab8500_chargalg: Switch to use hrtimer_setup() 2025-02-18 11:19:04 +01:00
ab8500_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
ab8500_fg.c power: supply: ab8500: use dev_to_psy() 2024-12-11 02:00:25 +01:00
acer_a500_battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
act8945a_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
adc-battery-helper.c power: supply: replace use of system_wq with system_percpu_wq 2025-09-09 00:53:12 +02:00
adc-battery-helper.h power: supply: adc-battery-helper: Add support for optional charge_finished GPIO 2025-09-06 01:50:01 +02:00
adp5061.c power: supply: Fix a typo 2024-10-15 22:37:54 +02:00
apm_power.c power: supply: apm_power: only unset own apm_get_power_status 2025-12-18 14:02:48 +01:00
axp20x_ac_power.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
axp20x_battery.c power supply and reset changes for the 6.15 series 2025-03-29 18:11:12 -07:00
axp20x_usb_power.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
axp288_charger.c power: supply: axp288_charger: Round constant_charge_voltage writes down 2024-07-27 00:16:15 +02:00
axp288_fuel_gauge.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
bd99954-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
bd99954-charger.h power: supply: Support ROHM bd99954 charger 2020-05-10 02:35:49 +02:00
bq27xxx_battery.c power supply and reset changes for the 6.18 series 2025-10-01 13:02:59 -07:00
bq27xxx_battery_hdq.c power supply and reset changes for the v5.10 series 2020-10-20 10:56:34 -07:00
bq27xxx_battery_i2c.c power: supply: bq27xxx: Retrieve again when busy 2025-04-28 00:24:52 +02:00
bq256xx_charger.c power: supply: bq256xx_charger: Constify reg_default array 2025-06-22 19:21:11 +02:00
bq257xx_charger.c power: supply: bq257xx: Add support for BQ257XX charger 2025-09-11 15:55:17 +01:00
bq2415x_charger.c power: supply: replace use of system_wq with system_percpu_wq 2025-09-09 00:53:12 +02:00
bq2515x_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
bq24190_charger.c power: supply: replace use of system_wq with system_percpu_wq 2025-09-09 00:53:12 +02:00
bq24257_charger.c power: supply: bq24257: convert to use maple tree register cache 2025-03-08 01:30:54 +01:00
bq24735-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
bq25890_charger.c power: supply: bq25890: convert to use maple tree register cache 2025-03-08 01:30:54 +01:00
bq25980_charger.c power: supply: bq25980_charger: Constify reg_default array 2025-06-22 19:21:11 +02:00
bq25980_charger.h power: supply: bq25980: Add support for the BQ259xx family 2020-10-04 01:54:35 +02:00
chagall-battery.c power: supply: Add driver for Pegatron Chagall battery 2025-04-30 00:02:18 +02:00
charger-manager.c power: supply: Use str_enable_disable-like helpers 2025-01-15 21:41:22 +01:00
collie_battery.c power: supply: collie: Fix wakeup source leaks on device unbind 2025-04-08 23:18:04 +02:00
cpcap-battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
cpcap-charger.c power: supply: cpcap-charger: Fix null check for power_supply_get_by_name 2025-06-22 19:23:04 +02:00
cros_charge-control.c power: supply: cros_charge-control: Avoid -Wflex-array-member-not-at-end warning 2025-04-29 23:58:33 +02:00
cros_peripheral_charger.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cros_usbpd-charger.c power: supply: cros_usbpd-charger: register power supply with devm_power_supply_register() 2024-10-15 22:22:21 +02:00
cw2015_battery.c power: supply: cw2015: Check devm_delayed_work_autocancel() return code 2025-12-18 14:02:47 +01:00
da9030_battery.c power: supply: da9030: convert timeouts to secs_to_jiffies() 2025-03-17 12:16:58 -07:00
da9052-battery.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
da9150-charger.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
da9150-fg.c power: supply: da9150-fg: fix potential overflow 2025-02-03 12:23:49 +01:00
ds2760_battery.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
ds2780_battery.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
ds2781_battery.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
ds2782_battery.c power: supply: ds2782: Use devm_delayed_work_autocancel() helper 2024-12-04 22:31:32 +01:00
generic-adc-battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
goldfish_battery.c power: supply: goldfish: Use devm_power_supply_register() helper 2024-01-27 01:23:40 +01:00
gpio-charger.c power: supply: gpio-charger: Clean up spacing for better readability 2025-09-06 22:49:07 +02:00
huawei-gaokun-battery.c power: supply: add Huawei Matebook E Go psy driver 2025-05-01 00:34:12 +02:00
ingenic-battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
intel_dc_ti_battery.c Fix Intel Dollar Cove TI battery driver 32-bit build error 2025-11-26 12:31:48 -08:00
ip5xxx_power.c i2c-for-6.15-rc1 2025-04-01 14:21:02 -07:00
ipaq_micro_battery.c power: supply: WQ_PERCPU added to alloc_workqueue users 2025-09-09 00:53:46 +02:00
isp1704_charger.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
Kconfig power supply and reset changes for the 6.18 series 2025-10-01 13:02:59 -07:00
lego_ev3_battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
lenovo_yoga_c630_battery.c power: supply: lenovo_yoga_c630_battery: register power supplies with power_supply_register() 2024-10-15 22:22:21 +02:00
lp8727_charger.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
lp8788-charger.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
lt3651-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
ltc2941-battery-gauge.c power: Explicitly include correct DT includes 2023-07-19 22:47:03 +02:00
ltc4162-l-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
Makefile power supply and reset changes for the 6.18 series 2025-10-01 13:02:59 -07:00
max1720x_battery.c power: supply: max1720x correct capacity computation 2025-06-22 23:27:44 +02:00
max1721x_battery.c power: supply: max1721x: Use strscpy() is more robust and safer 2023-02-03 13:58:41 +01:00
max8903_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
max8925_power.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
max8971_charger.c power: supply: Add support for Maxim MAX8971 charger 2025-05-01 22:44:04 +02:00
max8997_charger.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
max8998_charger.c power: supply: max8998_charger: Fix module autoloading 2024-08-27 11:41:42 +02:00
max14577_charger.c power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set 2025-06-22 19:29:23 +02:00
max14656_charger_detector.c power: supply: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 18:47:11 +02:00
max17040_battery.c power: supply: max17040: Check iio_read_channel_processed() return code 2025-12-18 14:02:47 +01:00
max17042_battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
max77650-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
max77693_charger.c power: supply: max77693: Fix wrong conversion of charge input threshold value 2025-03-17 15:25:24 +01:00
max77705_charger.c power: supply: max77705: Fix potential IRQ chip conflict when probing two devices 2026-01-08 10:17:02 +01:00
max77976_charger.c power: supply: max77976_charger: fix constant current reporting 2025-09-18 23:26:27 +02:00
mm8013.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
mp2629_charger.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
mt6360_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
mt6370-charger.c power: supply: Use devm_mutex_init() 2025-09-09 00:36:23 +02:00
olpc_battery.c sysfs: treewide: switch back to attribute_group::bin_attrs 2025-06-17 10:44:15 +02:00
pm8916_bms_vm.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
pm8916_lbc.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
pmu_battery.c power: supply: pmu_battery: Set power supply type to BATTERY 2024-11-10 03:33:17 +01:00
power_supply.h power: supply: core: fix build of extension sysfs group if CONFIG_SYSFS=n 2024-12-19 21:45:58 +01:00
power_supply_core.c power supply and reset changes for the 6.17 series 2025-07-31 21:39:01 -07:00
power_supply_hwmon.c power: supply: hwmon: prepare for power supply extensions 2024-12-05 00:02:31 +01:00
power_supply_leds.c power: supply: leds: Add activate() callback to triggers 2024-06-03 01:29:43 +02:00
power_supply_sysfs.c power: supply: core: Add state_of_health power supply property 2025-09-18 01:01:03 +02:00
qcom_battmgr.c power: supply: qcom_battmgr: support disabling charge control 2025-12-18 14:02:48 +01:00
qcom_smbb.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
qcom_smbx.c power: supply: pmi8998_charger: rename to qcom_smbx 2025-06-22 21:07:48 +02:00
rk817_charger.c power: supply: replace use of system_wq with system_percpu_wq 2025-09-09 00:53:12 +02:00
rn5t618_power.c power: supply: Change usb_types from an array into a bitmask 2024-09-03 23:20:28 +02:00
rt5033_battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
rt5033_charger.c power: supply: rt5033_charger: Fix device node reference leaks 2025-12-18 14:02:47 +01:00
rt9455_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
rt9467-charger.c power: supply: rt9467: Prevent using uninitialized local variable in rt9467_set_value_from_ranges() 2025-12-18 14:02:47 +01:00
rt9471.c power: supply: rt9471: Simplify definition of some struct linear_range 2025-05-03 19:17:02 +02:00
rx51_battery.c power: supply: rx51: remove redundant condition checks 2025-09-18 01:01:03 +02:00
samsung-sdi-battery.c power: supply: samsung-sdi-battery: constify ocv table 2024-10-15 22:14:12 +02:00
samsung-sdi-battery.h power: supply: Static data for Samsung batteries 2022-03-04 22:20:18 +01:00
sbs-battery.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
sbs-charger.c power: supply: sbs-charger: Support multiple devices 2025-09-08 15:05:33 +02:00
sbs-manager.c power: supply: Remove the use of dev_err_probe() 2025-09-06 23:49:06 +02:00
sc27xx_fuel_gauge.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
sc2731_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
smb347-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
stc3117_fuel_gauge.c power: supply: Add STC3117 fuel gauge unit driver 2024-12-21 16:39:34 +01:00
surface_battery.c power: supply: surface_battery: use dev_to_psy() 2024-12-11 02:00:25 +01:00
surface_charger.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
test_power.c power: supply: test-power: Test access to extended power supply 2025-07-07 15:19:49 +03:00
tps65090-charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
tps65217_charger.c power: supply: all: switch psy_cfg from of_node to fwnode 2025-03-08 01:42:34 +01:00
twl4030_charger.c power: supply: twl4030_charger: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-07 00:56:46 +02:00
twl4030_madc_battery.c power: supply: twl4030_madc: Use devm_power_supply_register() helper 2024-01-27 01:25:05 +01:00
twl6030_charger.c power: supply: initial support for TWL6030/32 2024-10-16 22:23:39 +02:00
ucs1002_power.c power: supply: replace use of system_wq with system_percpu_wq 2025-09-09 00:53:12 +02:00
ug3105_battery.c power: supply: adc-battery-helper: Add support for optional charge_finished GPIO 2025-09-06 01:50:01 +02:00
wilco-charger.c power: supply: wilco_ec: Add long life charging mode 2020-07-31 14:33:56 +02:00
wm97xx_battery.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00
wm831x_backup.c power: supply: wm831x: Use devm_power_supply_register() helper 2024-01-27 01:25:04 +01:00
wm831x_power.c power: supply: wm831x: Check wm831x_set_bits() return value 2025-12-18 14:02:47 +01:00
wm8350_power.c power: Switch back to struct platform_driver::remove() 2024-10-21 15:51:42 +02:00