From 8db4abd5dd21aa91db0e8c7701f5bbf15418cdf4 Mon Sep 17 00:00:00 2001 From: wangbowen6 Date: Thu, 25 May 2023 22:23:28 +0800 Subject: [PATCH] arm_backtrace_sp: check the addr after every operation to addr Should check the addr every time it changed to avoid crash in backtrace. Signed-off-by: wangbowen6 --- arch/arm/src/common/arm_backtrace_sp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm/src/common/arm_backtrace_sp.c b/arch/arm/src/common/arm_backtrace_sp.c index ee8a662778..b143d551c7 100644 --- a/arch/arm/src/common/arm_backtrace_sp.c +++ b/arch/arm/src/common/arm_backtrace_sp.c @@ -126,6 +126,11 @@ static int backtrace_branch(unsigned long top, unsigned long sp, } addr = (addr & ~1) - 2; + if (!in_code_region(addr)) + { + continue; + } + ins16 = *(uint16_t *)addr; if (INSTR_IS(ins16, T_BLX)) { @@ -145,6 +150,11 @@ static int backtrace_branch(unsigned long top, unsigned long sp, else if ((ins16 & 0xd000) == 0xd000) { addr -= 2; + if (!in_code_region(addr)) + { + continue; + } + ins16 = *(uint16_t *)addr; if (INSTR_IS(ins16, T_BL)) {