[PATCH 1/3] powercap: arm_scmi: Fix potential stale zones after a skipped leaf
From: Cristian Marussi
Date: Sun Nov 15 2026 - 06:09:10 EST
From: Guangshuo Li <liguangshuo@xxxxxxxxxxxxxxx>
scmi_zones_register() skips leaf zones that cannot be registered, but
returns the last leaf error when that leaf ends the traversal. Probe
then fails without unregistering the successfully registered zones,
whose private data is device-managed.
Return success after completing the traversal. Keep the existing error
return and full rollback for a failed non-leaf zone.
This issue was found by our static analysis tool under development.
Fixes: 3e767d6850f8 ("powercap: arm_scmi: Remove recursion while parsing zones")
Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Guangshuo Li <liguangshuo@xxxxxxxxxxxxxxx>
Reviewed-by: Cristian Marussi <cristian.marussi@xxxxxxx>
Signed-off-by: Cristian Marussi <cristian.marussi@xxxxxxx>
---
drivers/powercap/arm_scmi_powercap.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/powercap/arm_scmi_powercap.c b/drivers/powercap/arm_scmi_powercap.c
index 63a956cf8d2b..e2270476a98c 100644
--- a/drivers/powercap/arm_scmi_powercap.c
+++ b/drivers/powercap/arm_scmi_powercap.c
@@ -407,6 +407,7 @@ static int scmi_zones_register(struct device *dev,
node);
}
}
+ ret = 0;
out:
kfree(zones_stack);
--
2.54.0