class_get_device_by_driver()'s return value is not checked, in case of BSEC
driver is not probed, dev is not set and used just after as parameter of
misc_read() which leads to a Synchronous Abort.

Add uclass_get_device_by_driver()'s return value check to fix it.

Signed-off-by: Patrice Chotard <[email protected]>
---
 board/st/common/cmd_stboard.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/board/st/common/cmd_stboard.c b/board/st/common/cmd_stboard.c
index d77046499a0..58d9f205b92 100644
--- a/board/st/common/cmd_stboard.c
+++ b/board/st/common/cmd_stboard.c
@@ -92,6 +92,11 @@ static int do_stboard(struct cmd_tbl *cmdtp, int flag, int 
argc,
                                          DM_DRIVER_GET(stm32mp_bsec),
                                          &dev);
 
+       if (ret) {
+               puts("Can't get BSEC device\n");
+               return CMD_RET_FAILURE;
+       }
+
        ret = misc_read(dev, STM32_BSEC_OTP(BSEC_OTP_BOARD),
                        &otp, sizeof(otp));
 

-- 
2.43.0

Reply via email to