This is an automated email from Gerrit.

"Tarek BOCHKATI <[email protected]>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6535

-- gerrit

commit fff092de1e9559c314ed2edf5a77ce4655c04173
Author: Tarek BOCHKATI <[email protected]>
Date:   Sun Aug 29 16:33:55 2021 +0100

    flash/stm32l4x: fix segmentation fault with HLA adapters and STM32WLx 
devices
    
    CPU2 (Cortex-M0+) is supported only with non-hla adapters because it is 
located
    on AP1. Then check if the target is not overridden with "hla_target",
    otherwise cortex_m->armv7m.debug_ap is null and will cause a Segmentation 
fault.
    
    Change-Id: I501f5b69e629aa8d2836b5194063d74d5bfddb12
    Signed-off-by: Tarek BOCHKATI <[email protected]>
    Fixes: https://github.com/STMicroelectronics/OpenOCD/issues/6

diff --git a/src/flash/nor/stm32l4x.c b/src/flash/nor/stm32l4x.c
index e4d291e6d..5fd3a2258 100644
--- a/src/flash/nor/stm32l4x.c
+++ b/src/flash/nor/stm32l4x.c
@@ -1646,7 +1646,11 @@ static int stm32l4_read_idcode(struct flash_bank *bank, 
uint32_t *id)
 
        struct cortex_m_common *cortex_m = target_to_cm(bank->target);
 
-       if (cortex_m->core_info->partno == CORTEX_M0P_PARTNO && 
cortex_m->armv7m.debug_ap->ap_num == 1) {
+       /* CPU2 (Cortex-M0+) is supported only with non-hla adapters because it 
is located on AP1.
+        * Then check if the "cortex_m" target is not overridden with 
"hla_target",
+        * otherwise cortex_m->armv7m.debug_ap is null and will cause a 
Segmentation fault */
+       if (cortex_m->core_info->partno == CORTEX_M0P_PARTNO &&
+                       !cortex_m->armv7m.is_hla_target && 
cortex_m->armv7m.debug_ap->ap_num == 1) {
                uint32_t uid64_ids;
 
                /* UID64 is contains
@@ -1954,7 +1958,11 @@ static int stm32l4_probe(struct flash_bank *bank)
                page_size_kb = 2;
                num_pages = flash_size_kb / page_size_kb;
                stm32l4_info->bank1_sectors = num_pages;
-               if (armv7m->debug_ap->ap_num == 1)
+
+               /* CPU2 (Cortex-M0+) is supported only with non-hla adapters 
because it is located on AP1.
+                * Then check if the "cortex_m" target is not overridden with 
"hla_target",
+                * otherwise armv7m->debug_ap is null and will cause a 
Segmentation fault */
+               if (!armv7m->is_hla_target && armv7m->debug_ap->ap_num == 1)
                        stm32l4_info->flash_regs = stm32wl_cpu2_flash_regs;
                break;
        default:

-- 

Reply via email to