linux/drivers/regulator
Cosmin Tanislav 6b0cd72757
regulator: max20086: fix invalid memory access
max20086_parse_regulators_dt() calls of_regulator_match() using an
array of struct of_regulator_match allocated on the stack for the
matches argument.

of_regulator_match() calls devm_of_regulator_put_matches(), which calls
devres_alloc() to allocate a struct devm_of_regulator_matches which will
be de-allocated using devm_of_regulator_put_matches().

struct devm_of_regulator_matches is populated with the stack allocated
matches array.

If the device fails to probe, devm_of_regulator_put_matches() will be
called and will try to call of_node_put() on that stack pointer,
generating the following dmesg entries:

max20086 6-0028: Failed to read DEVICE_ID reg: -121
kobject: '\xc0$\xa5\x03' (000000002cebcb7a): is not initialized, yet
kobject_put() is being called.

Followed by a stack trace matching the call flow described above.

Switch to allocating the matches array using devm_kcalloc() to
avoid accessing the stack pointer long after it's out of scope.

This also has the advantage of allowing multiple max20086 to probe
without overriding the data stored inside the global of_regulator_match.

Fixes: bfff546aae ("regulator: Add MAX20086-MAX20089 driver")
Signed-off-by: Cosmin Tanislav <demonsingur@gmail.com>
Link: https://patch.msgid.link/20250508064947.2567255-1-demonsingur@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2025-05-14 11:16:52 +02:00
..
88pg86x.c
88pm800-regulator.c
88pm886-regulator.c regulator: Add regulators driver for Marvell 88PM886 PMIC 2024-06-28 15:41:11 +01:00
88pm8607.c
aat2870-regulator.c
ab8500-ext.c
ab8500.c
act8865-regulator.c regulator: Use of_property_read_bool() 2024-08-01 12:50:11 +01:00
act8945a-regulator.c
ad5398.c regulator: ad5398: Fix incorrect power down bit mask 2025-02-06 11:27:24 +00:00
anatop-regulator.c
arizona-ldo1.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
arizona-micsupp.c
as3711-regulator.c
as3722-regulator.c
atc260x-regulator.c
aw37503-regulator.c
axp20x-regulator.c regulator: axp20x: AXP717: dcdc4 doesn't have delay 2025-03-19 12:28:26 +00:00
bcm590xx-regulator.c
bd718x7-regulator.c regulator: bd718x7: Use scoped device node handling to simplify error paths 2024-08-14 18:21:42 +01:00
bd9571mwv-regulator.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
bd9576-regulator.c regulator: bd9576: Constify struct linear_range 2024-08-06 15:24:01 +01:00
bd71815-regulator.c regulator: bd71815: fix ramp values 2024-06-12 16:19:49 +01:00
bd71828-regulator.c regulator: bd71828: Don't overwrite runtime voltages 2024-05-16 13:36:41 +01:00
bd96801-regulator.c regulator: bd96801: Add ERRB IRQ 2024-12-02 00:31:31 +00:00
core.c - The 7 patch series "powerpc/crash: use generic crashkernel 2025-04-01 10:06:52 -07:00
cpcap-regulator.c
cros-ec-regulator.c regulator: cros-ec: use devm_kmemdup_array() 2025-02-28 14:01:07 +00:00
da903x-regulator.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
da9052-regulator.c regulator: da9052: Constify static data 2024-09-10 12:44:03 +01:00
da9055-regulator.c regulator: da9055: Constify static data 2024-09-10 12:44:04 +01:00
da9062-regulator.c regulator: da9062: Annotate struct da9062_regulators with __counted_by 2023-10-09 13:14:23 +01:00
da9063-regulator.c regulator: Few constifications of static data 2024-09-11 11:20:37 +01:00
da9121-regulator.c regulator: da9121: Constify static data 2024-09-10 12:44:06 +01:00
da9121-regulator.h
da9210-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
da9210-regulator.h
da9211-regulator.c regulator: da9211: Constify struct regulator_desc 2024-09-09 18:27:02 +01:00
da9211-regulator.h
db8500-prcmu.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
dbx500-prcmu.c
dbx500-prcmu.h
devres.c Convert regulator drivers to use 2025-02-28 16:33:32 +00:00
dummy.c regulator: dummy: convert to use the faux device interface 2025-03-14 09:10:29 +01:00
dummy.h
event.c regulator: event: Ensure atomicity for sequence number 2024-01-04 20:02:06 +00:00
fan53555.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
fan53880.c
fixed-helper.c regulator: fixed-helper: Add missing "Return" kerneldoc section 2024-08-29 14:20:28 +01:00
fixed.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
gpio-regulator.c
helpers.c regulator: update some comments ([gs]et_voltage_vsel vs [gs]et_voltage_sel) 2024-09-13 14:57:08 +01:00
hi655x-regulator.c
hi6421-regulator.c regulator: hi6421: Constify static data 2024-09-10 12:44:07 +01:00
hi6421v530-regulator.c regulator: hi6421v530: Use container_of and constify static data 2024-09-10 12:44:17 +01:00
hi6421v600-regulator.c regulator: hi6421v600: Constify static data 2024-09-10 12:44:08 +01:00
internal.h regulator: Add devres version of of_regulator_get_optional() 2024-09-30 01:11:41 +02:00
irq_helpers.c regulator: allow user configuration of hardware protection action 2025-03-16 23:24:14 -07:00
isl6271a-regulator.c regulator: isl6271a: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-30 01:11:42 +02:00
isl9305.c regulator: isl9305: convert to use maple tree register cache 2024-03-25 00:48:18 +00:00
Kconfig * Maxim MAX77705: 2025-03-29 14:33:13 -07:00
lm363x-regulator.c
lochnagar-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
lp872x.c
lp873x-regulator.c regulator: lp873x: Use bitfield helpers 2024-02-15 13:41:11 +00:00
lp3971.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp3972.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp8755.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
lp8788-buck.c regulator: lp8788-buck: fix copy and paste bug in lp8788_dvs_gpio_request() 2024-03-06 14:03:32 +00:00
lp8788-ldo.c
lp87565-regulator.c regulator: lp87565: Use bitfield helpers 2024-02-15 13:41:10 +00:00
ltc3589.c regulator: ltc3589: Convert enum->pointer for data in the match tables 2023-09-11 01:31:25 +01:00
ltc3676.c
Makefile regulator: pf9453: add PMIC PF9453 support 2025-03-16 23:34:01 +00:00
max1586.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max5970-regulator.c regulator: max5970: Drop unused structs 2024-10-10 12:16:58 +01:00
max8649.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8660.c
max8893.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8907-regulator.c
max8925-regulator.c
max8952.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
max8973-regulator.c regulator: max8973: Use irq_get_trigger_type() helper 2024-09-13 14:57:07 +01:00
max8997-regulator.c regulator: max8997: Use scoped device node handling to simplify error paths 2024-08-14 18:21:44 +01:00
max8998.c regulator: max8998: Convert to GPIO descriptors 2024-02-26 13:46:37 +00:00
max14577-regulator.c
max20086-regulator.c regulator: max20086: fix invalid memory access 2025-05-14 11:16:52 +02:00
max20411-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
max77503-regulator.c regulator: max77503: remove unused struct 'max77503_dev' 2024-05-29 11:24:22 +01:00
max77541-regulator.c
max77620-regulator.c
max77650-regulator.c regulator: max77650: Use container_of and constify static data 2024-09-10 12:44:18 +01:00
max77686-regulator.c
max77693-regulator.c
max77802-regulator.c regulator: Unify "negative error number" terminology in comments 2024-08-29 14:20:30 +01:00
max77826-regulator.c regulator: max77826: Constify static data 2024-09-10 12:44:11 +01:00
max77857-regulator.c regulator: max77857: Make max77857_id static 2024-08-01 12:50:10 +01:00
mc13xxx-regulator-core.c
mc13xxx.h regulator: mc13xxx: Annotate struct mc13xxx_regulator_priv with __counted_by 2023-09-22 19:01:38 +01:00
mc13783-regulator.c
mc13892-regulator.c
mcp16502.c regulator: mcp16502: Add supplier for regulators 2024-08-13 12:41:44 +01:00
mp886x.c regulator: mp886x: Make similar OF and ID table 2023-09-11 01:31:26 +01:00
mp5416.c regulator: mp5416: Constify struct regulator_desc 2024-09-09 18:27:01 +01:00
mp8859.c regulator: mp8859: Implement set_current_limit() 2024-02-26 13:46:55 +00:00
mpq7920.c
mpq7920.h
mt6311-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
mt6311-regulator.h
mt6315-regulator.c
mt6323-regulator.c
mt6331-regulator.c
mt6332-regulator.c
mt6357-regulator.c regulator: update some comments ([gs]et_voltage_vsel vs [gs]et_voltage_sel) 2024-09-13 14:57:08 +01:00
mt6358-regulator.c regulator: Merge up pending fix 2023-10-30 13:14:27 +00:00
mt6359-regulator.c
mt6360-regulator.c regulator: mt6360: De-capitalize devicetree regulator subnodes 2024-04-09 16:22:59 +01:00
mt6370-regulator.c
mt6380-regulator.c
mt6397-regulator.c
mtk-dvfsrc-regulator.c regulator: mtk-dvfsrc: Constify static data 2024-09-10 12:44:12 +01:00
of_regulator.c regulator: Add (devm_)of_regulator_get() 2025-02-24 15:26:08 +00:00
palmas-regulator.c regulator: palmas: remove redundant initialization of pointer pdata 2023-11-13 01:26:31 +00:00
pbias-regulator.c
pca9450-regulator.c regulator: pca9450: Handle hardware with fixed SD_VSEL for LDO5 2025-03-03 13:38:23 +00:00
pcap-regulator.c regulator: pcap: Constify static data 2024-09-10 12:44:13 +01:00
pf8x00-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pf9453-regulator.c regulator: pf9453: add PMIC PF9453 support 2025-03-16 23:34:01 +00:00
pfuze100-regulator.c regulator: pfuze100: Constify static data 2024-09-10 12:44:14 +01:00
pv88060-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pv88060-regulator.h
pv88080-regulator.c regulator: pv880x0: Simplify probe() 2023-09-11 01:30:10 +01:00
pv88080-regulator.h
pv88090-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
pv88090-regulator.h
pwm-regulator.c regulator: pwm-regulator: Use dev_err_probe() for error paths in .probe() 2024-02-19 16:59:34 +00:00
qcom-labibb-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
qcom-pm8008-regulator.c regulator: add pm8008 pmic regulator driver 2024-06-13 18:42:21 +01:00
qcom-refgen-regulator.c regulator: qcom-refgen: Constify static data 2024-09-10 12:44:15 +01:00
qcom-rpmh-regulator.c regulator: qcom-rpmh: Update ranges for FTSMPS525 2024-11-18 15:44:30 +00:00
qcom_rpm-regulator.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
qcom_smd-regulator.c regulator: qcom-smd: make smd_vreg_rpm static 2024-09-30 01:11:44 +02:00
qcom_spmi-regulator.c regulator: Fix typos in the comment 2024-09-10 12:40:38 +01:00
qcom_usb_vbus-regulator.c
raa215300.c
rc5t583-regulator.c
regnl.h regulator: event: Add regulator netlink event support 2023-12-06 13:14:54 +00:00
renesas-usb-vbus-regulator.c regulator: Call of_node_put() only once in rzg2l_usb_vbus_regulator_probe() 2024-09-30 01:11:43 +02:00
rk808-regulator.c objtool, regulator: rk808: Remove potential undefined behavior in rk806_set_mode_dcdc() 2025-03-25 23:00:29 +01:00
rn5t618-regulator.c
rohm-regulator.c regulator: rohm-regulator: warn if unsupported voltage is set 2024-05-16 13:36:42 +01:00
rpi-panel-attiny-regulator.c regulator: rpi-panel-attiny: convert to use maple tree register cache 2024-03-25 00:48:27 +00:00
rt4801-regulator.c
rt4803.c
rt4831-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
rt5033-regulator.c
rt5120-regulator.c regulator: rt5120: Convert comma to semicolon 2024-07-29 01:19:05 +01:00
rt5190a-regulator.c
rt5739.c
rt5759-regulator.c
rt6160-regulator.c
rt6190-regulator.c
rt6245-regulator.c
rtmv20-regulator.c regulator: rtmv20: convert to use maple tree register cache 2024-03-25 00:48:23 +00:00
rtq2134-regulator.c
rtq2208-regulator.c regulator: rtq2208: Fix the LDO DVS capability 2025-03-17 12:45:37 +00:00
rtq6752-regulator.c regulator: rtq6752: make const read-only array fault_mask static 2025-03-17 17:35:52 +00:00
s2mpa01.c
s2mps11.c regulator: s2mps11: Add support for S2MPU05 regulators 2025-03-13 12:38:52 +00:00
s5m8767.c regulator: s5m8767: Use scoped device node handling to simplify error paths 2024-08-14 18:21:45 +01:00
sc2731-regulator.c
scmi-regulator.c regulator: scmi: Simplify with scoped for each OF child loop 2024-08-14 18:21:48 +01:00
sky81452-regulator.c
slg51000-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
slg51000-regulator.h
stm32-booster.c regulator: Use device_get_match_data() 2023-10-17 21:38:48 +01:00
stm32-pwr.c regulator: stm32-pwr: add support of STM32MP13 2024-05-27 01:32:22 +01:00
stm32-vrefbuf.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
stpmic1_regulator.c regulator: stpmic1: Fix kernel-doc notation warnings 2023-11-13 01:26:32 +00:00
stw481x-vmmc.c
sun20i-regulator.c regulator: sun20i: Add Allwinner D1 LDOs driver 2024-05-09 17:44:01 +02:00
sy7636a-regulator.c
sy8106a-regulator.c regulator: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 01:32:50 +01:00
sy8824x.c regulator: sy8824x: Make similar OF and ID table 2023-09-11 01:31:24 +01:00
sy8827n.c
ti-abb-regulator.c regulator: ti-abb: don't use devm_platform_ioremap_resource_byname for shared interrupt register 2024-01-23 15:05:13 +00:00
tps6105x-regulator.c
tps6286x-regulator.c regulator: add missing MODULE_DESCRIPTION() macro 2024-06-10 15:39:29 +01:00
tps6287x-regulator.c regulator: TPS6287X: Use min/max uV to get VRANGE 2025-01-21 15:21:56 +00:00
tps6507x-regulator.c
tps6524x-regulator.c
tps6586x-regulator.c
tps6594-regulator.c regulator: tps6594-regulator: Fix the number of irqs for TPS65224 and TPS6594 2024-06-04 13:22:18 +01:00
tps51632-regulator.c regulator: tps51632: convert to use maple tree register cache 2024-03-25 00:48:25 +00:00
tps62360-regulator.c regulator: tps62360: convert to use maple tree register cache 2024-03-25 00:48:26 +00:00
tps65023-regulator.c regulator: tps65023: Constify static data 2024-09-10 12:44:09 +01:00
tps65086-regulator.c
tps65090-regulator.c
tps65132-regulator.c regulator: tps65132: Add of_match table 2024-03-25 19:28:27 +00:00
tps65217-regulator.c
tps65218-regulator.c
tps65219-regulator.c regulator: tps65219: Remove debugging helper function 2024-12-17 21:20:01 +00:00
tps65910-regulator.c
tps65912-regulator.c
tps68470-regulator.c
twl-regulator.c
twl6030-regulator.c
uniphier-regulator.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
userspace-consumer.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
vctrl-regulator.c
vexpress-regulator.c
virtual.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
vqmmc-ipq4019-regulator.c regulator: vqmmc-ipq4019: fix module autoloading 2024-04-10 18:48:59 +01:00
wm831x-dcdc.c
wm831x-isink.c regulator: wm831x-isink: Convert comma to semicolon 2024-07-29 01:19:04 +01:00
wm831x-ldo.c
wm8350-regulator.c regulator: Switch back to struct platform_driver::remove() 2024-11-12 13:08:35 +00:00
wm8400-regulator.c regulator: wm8400: Constify struct regulator_desc 2024-09-09 21:08:42 +01:00
wm8994-regulator.c