linux/drivers/reset
Geert Uytterhoeven 4a6756f56b reset: Fix crash when freeing non-existent optional resets
When obtaining one or more optional resets, non-existent resets are
stored as NULL pointers, and all related error and cleanup paths need to
take this into account.

Currently only reset_control_put() and reset_control_bulk_put()
get this right.  All of __reset_control_bulk_get(),
of_reset_control_array_get(), and reset_control_array_put() lack the
proper checking, causing NULL pointer dereferences on failure or
release.

Fix this by moving the existing check from reset_control_bulk_put() to
__reset_control_put_internal(), so it applies to all callers.
The double check in reset_control_put() doesn't hurt.

Fixes: 17c82e206d ("reset: Add APIs to manage array of resets")
Fixes: 48d7139589 ("reset: Add reset_control_bulk API")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/2440edae7ca8534628cdbaf559ded288f2998178.1701276806.git.geert+renesas@glider.be
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2023-11-30 15:02:21 +01:00
..
hisilicon reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning 2023-11-24 11:26:19 +01:00
starfive reset: starfive: jh7110: Add StarFive STG/ISP/VOUT resets support 2023-07-26 11:45:31 -07:00
sti reset: sti: simplify driver's config and build 2023-05-08 09:28:31 +02:00
tegra reset: tegra-bpmp: Restore Handle errors in BPMP response 2022-04-04 11:14:13 +02:00
core.c reset: Fix crash when freeing non-existent optional resets 2023-11-30 15:02:21 +01:00
Kconfig ARM: SoC drivers for 6.5 2023-06-29 15:22:19 -07:00
Makefile ARM: SoC drivers for 6.5 2023-06-29 15:22:19 -07:00
reset-a10sr.c reset: a10sr: add missing of_match_table reference 2021-05-10 09:48:17 +02:00
reset-ath79.c reset: ath79: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-axs10x.c reset: axs10x: Use devm_platform_ioremap_resource() 2023-05-08 09:28:31 +02:00
reset-bcm6345.c reset: bcm6345: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-berlin.c reset: berlin: support module build 2021-06-07 12:45:59 +02:00
reset-brcmstb-rescal.c reset: brcmstb-rescal: Use devm_platform_ioremap_resource() 2023-05-08 09:28:31 +02:00
reset-brcmstb.c reset: brcmstb: Add missing MODULE_DEVICE_TABLE 2021-05-12 08:01:26 +02:00
reset-hsdk.c reset: reset-hsdk: Use devm_platform_ioremap_resource() 2023-05-08 09:28:31 +02:00
reset-imx7.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-intel-gw.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-k210.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-lantiq.c reset: lantiq: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-lpc18xx.c reset: lpc18xx: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-ma35d1.c reset: Add Nuvoton ma35d1 reset driver support 2023-06-05 13:18:09 +02:00
reset-meson-audio-arb.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-meson.c reset: meson: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-microchip-sparx5.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-mpfs.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-npcm.c reset: npcm: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-pistachio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
reset-qcom-aoss.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-qcom-pdc.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-raspberrypi.c reset: raspberrypi: Release firmware handle on unbind 2021-03-22 17:59:51 +01:00
reset-rzg2l-usbphy-ctrl.c reset: renesas: Check return value of reset_control_deassert() 2022-04-04 11:00:27 +02:00
reset-scmi.c reset: reset-scmi: Port driver to the new scmi_reset_proto_ops interface 2021-03-30 16:34:54 +01:00
reset-simple.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-socfpga.c reset: socfpga: add empty driver allowing consumers to probe 2021-10-05 12:23:16 +02:00
reset-sunplus.c reset: Add Sunplus SP7021 reset driver 2022-07-08 14:23:39 +02:00
reset-sunxi.c reset: Move reset-simple header out of drivers/reset 2020-06-16 14:19:56 +02:00
reset-ti-sci.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_320.RULE 2022-06-10 14:51:36 +02:00
reset-ti-syscon.c reset: ti: syscon: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-tn48m.c reset: Add Delta TN48M CPLD reset controller 2022-02-25 09:59:35 +01:00
reset-tps380x.c reset: tps380x: Fix spelling mistake "Voltags" -> "Voltage" 2022-07-28 14:08:50 +02:00
reset-uniphier-glue.c reset: uniphier-glue: remove unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-uniphier.c reset: Explicitly include correct DT includes 2023-07-28 17:36:20 +02:00
reset-zynq.c reset: zynq: remove unneeded call to platfrom_set_drvdata() 2023-08-08 15:31:00 +02:00
reset-zynqmp.c reset: zynqmp: removed unneeded call to platform_set_drvdata() 2023-08-08 15:31:00 +02:00