]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
stm32mp1: Add check on syscon_get_first_range() return value
authorPatrice Chotard <patrice.chotard@foss.st.com>
Wed, 4 Feb 2026 10:16:08 +0000 (11:16 +0100)
committerPatrice Chotard <patrice.chotard@foss.st.com>
Tue, 24 Feb 2026 16:44:09 +0000 (17:44 +0100)
syscon_get_first_range()'s return value is used as base address to perform
a read, without any checks.
In case stmp32mp_syscon is not binded, syscon_get_first_range() returns
-ENODEV which leads to a "Synchronous abort".

Add syscon_get_first_range() check on return value.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
arch/arm/mach-stm32mp/stm32mp1/stm32mp13x.c

index 79b2f2d0bba3a8eccf257df2ff2840baf0a4faa9..6d2d69f34427f751f583eb91bf768fd98929ad1d 100644 (file)
@@ -17,6 +17,7 @@
 #include <dm/device.h>
 #include <dm/uclass.h>
 #include <linux/bitfield.h>
+#include <linux/err.h>
 #include <malloc.h>
 
 /* RCC register */
@@ -231,6 +232,12 @@ static u32 read_idc(void)
 {
        void *syscfg = syscon_get_first_range(STM32MP_SYSCON_SYSCFG);
 
+       if (IS_ERR(syscfg)) {
+               pr_err("Error, can't get SYSCON range (%ld)\n", PTR_ERR(syscfg));
+
+               return PTR_ERR(syscfg);
+       }
+
        return readl(syscfg + SYSCFG_IDC_OFFSET);
 }