[PATCH v2025.09.y 37/58] pmdomain: fix dereference before NULL check in genpd_get_from_provider

Ahmad Fatoum a.fatoum at pengutronix.de
Fri Mar 13 06:25:21 PDT 2026


genpd_get_from_provider() dereferences genpdspec->np in the variable
declaration before checking whether genpdspec itself is NULL.

(cherry picked from commit de2124f33968f8167f5371e5f8d7f6b0f2563fc5)

Fixes: abf97f3993 ("pmdomain: look up pmdomain even if not have_genpd_providers")
Reported-by: GCC 14.2 -fanalyzer
Co-authored-by: Claude Opus 4.6 <noreply at anthropic.com>
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
Link: https://lore.barebox.org/20260216084253.3547270-4-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/base/power.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/base/power.c b/drivers/base/power.c
index 66ad6d05e815..b641e11ef3c3 100644
--- a/drivers/base/power.c
+++ b/drivers/base/power.c
@@ -255,13 +255,15 @@ static struct generic_pm_domain *genpd_get_from_provider(
 					struct of_phandle_args *genpdspec)
 {
 	struct generic_pm_domain *genpd = ERR_PTR(-ENOENT);
-	struct device_node *node = genpdspec->np;
 	struct of_genpd_provider *provider;
+	struct device_node *node;
 	int ret;
 
 	if (!genpdspec)
 		return ERR_PTR(-EINVAL);
 
+	node = genpdspec->np;
+
 	ret = of_device_ensure_probed(node);
 	if (ret) {
 		struct device_node *parent;
-- 
2.47.3




More information about the barebox mailing list