field.out_value = NULL;
        field.in_value = str9xpec_info->options;
 
-
        jtag_add_dr_scan(tap, 1, &field, TAP_IDLE);
        jtag_execute_queue();
 
 
        str9xpec_info = bank->driver_priv;
 
-       tap0 = str9xpec_info->tap;
-
        /* remove arm core from chain - enter turbo mode */
+       tap0 = str9xpec_info->tap;
+       if (tap0 == NULL) {
+               /* things are *WRONG* */
+               command_print(CMD_CTX, "**STR9FLASH** (tap0) invalid chain?");
+               return ERROR_FAIL;
+       }
        tap1 = tap0->next_tap;
        if (tap1 == NULL) {
                /* things are *WRONG* */
                command_print(CMD_CTX, "**STR9FLASH** (tap1) invalid chain?");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
        tap2 = tap1->next_tap;
        if (tap2 == NULL) {
                /* things are *WRONG* */
                command_print(CMD_CTX, "**STR9FLASH** (tap2) invalid chain?");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        /* enable turbo mode - TURBO-PROG-ENABLE */