flash Kinetis: fix mdm check_security regression in JTAG mode 12/3712/2
authorTomas Vanek <vanekt@fbl.cz>
Sun, 21 Aug 2016 13:27:23 +0000 (15:27 +0200)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Mon, 17 Oct 2016 08:17:37 +0000 (09:17 +0100)
Commit 6d5b4d709cb05e8daf0350ac507b928da95d0abb causes failed assert
when JTAG transport is selected:

src/target/arm_adi_v5.h:346: dap_queue_ap_read:
  Assertion `ap->dap->ops != ((void *)0)' failed.

As check_security runs early in examine-start event, dap->ops must
be checked.

Change-Id: Ibd8312a3c668fbce834eed9790eabeed794117aa
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/3712
Tested-by: jenkins
Reviewed-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/flash/nor/kinetis.c

index d02918b..0b738e2 100644 (file)
@@ -609,6 +609,9 @@ COMMAND_HANDLER(kinetis_check_flash_security_status)
                return ERROR_OK;
        }
 
+       if (!dap->ops)
+               return ERROR_OK;        /* too early to check, in JTAG mode ops may not be initialised */
+
        uint32_t val;
        int retval;
 
@@ -623,7 +626,7 @@ COMMAND_HANDLER(kinetis_check_flash_security_status)
        }
 
        if (val == 0)
-               return ERROR_OK;
+               return ERROR_OK;        /* dap not yet initialised */
 
        bool found = false;
        for (size_t i = 0; i < ARRAY_SIZE(kinetis_known_mdm_ids); i++) {