soc: samsung: exynos-pmu: fix use-after-free of interrupt generator node
Subsystems (2)
Krzysztof Kozlowski
maintainerPATCH 1/1 soc: samsung: exynos-pmu: fix use-after-free of interrupt generator node
From: Alexey Klimov <[email protected]>
The setup_cpuhp_and_cpuidle() parses the device tree node for the interrupt generation block via of_parse_phandle() and decrements its reference count using of_node_put() immediately after fetching the resource address. However, later the intr_gen_node pointer is passed into of_syscon_register_regmap().
Fix this by declaring intr_gen_node with __free() and removing of_node_put().
--- drivers/soc/samsung/exynos-pmu.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/soc/samsung/exynos-pmu.c +2 -5
@@ -409,13 +409,12 @@ static struct notifier_block exynos_cpupm_reboot_nb = {static int setup_cpuhp_and_cpuidle (struct device *dev) { -struct device_node *intr_gen_node; + struct device_node *intr_gen_node __free(device_node) = +of_parse_phandle (dev->of_node,"google,pmu-intr-gen-syscon" ,0 );struct resource intrgen_res;void __iomem *virt_addr;int ret, cpu; - intr_gen_node =of_parse_phandle (dev->of_node, -"google,pmu-intr-gen-syscon" ,0 );if (!intr_gen_node) {/* * To maintain support for older DTs that didn't specify syscon
@@ -431,8 +430,6 @@ static int setup_cpuhp_and_cpuidle(struct device *dev)* syscon provided regmap. */ ret =of_address_to_resource (intr_gen_node,0 , &intrgen_res); -of_node_put (intr_gen_node); - virt_addr =devm_ioremap (dev, intrgen_res.start,resource_size (&intrgen_res));if (!virt_addr)
Signature · 1 line
2.53.0
This patch was applied to soc/soc.git (arm/fixes) by Arnd Bergmann <[email protected]>:
Hello:
This patch was applied to soc/soc.git (arm/fixes)
by Arnd Bergmann <[email protected]>:
Quoted 9 lines · On Thu, 17 Sep 2026 10:16:42 +0200 you wrote:
From: Alexey Klimov <[email protected]>
The
setup_cpuhp_and_cpuidle()parses the device tree node for the interrupt generation block viaof_parse_phandle()and decrements its reference count usingof_node_put()immediately after fetching the resource address. However, later theintr_gen_nodepointer is passed intoof_syscon_register_regmap().[...]
Here is the summary with links:
- [fixes] soc: samsung: exynos-pmu: fix use-after-free of interrupt generator node
https://git.kernel.org/soc/soc/c/4dd1999783d7
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html