From 94c9e5299aab5941bc2c5c237b9a58d09e2e5868 Mon Sep 17 00:00:00 2001 From: Sachin Parekh Date: Mon, 6 Sep 2021 11:21:39 +0530 Subject: [PATCH] esp32s2/hmac: Release HMAC lock in downstream mode incase of failure --- components/esp32s2/esp_hmac.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/components/esp32s2/esp_hmac.c b/components/esp32s2/esp_hmac.c index 93f54a2a5c..7ca8940a87 100644 --- a/components/esp32s2/esp_hmac.c +++ b/components/esp32s2/esp_hmac.c @@ -55,7 +55,8 @@ esp_err_t esp_hmac_calculate(hmac_key_id_t key_id, esp_err_t esp_hmac_jtag_enable(hmac_key_id_t key_id, const uint8_t *token) { - esp_err_t err; + int ets_status; + esp_err_t err = ESP_OK; if ((!token) || (key_id >= HMAC_KEY_MAX)) return ESP_ERR_INVALID_ARG; @@ -77,10 +78,10 @@ esp_err_t esp_hmac_jtag_enable(hmac_key_id_t key_id, const uint8_t *token) REG_WRITE(DPORT_JTAG_CTRL_0_REG + i, __builtin_bswap32(key_word)); } - err = ets_hmac_calculate_downstream(convert_key_type(key_id), ETS_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG); - if (err != ETS_OK) { - ESP_LOGE(TAG, "HMAC downstream JTAG enable mode setting failed."); - return ESP_FAIL; + ets_status = ets_hmac_calculate_downstream(convert_key_type(key_id), ETS_EFUSE_KEY_PURPOSE_HMAC_DOWN_JTAG); + if (ets_status != ETS_OK) { + err = ESP_FAIL; + ESP_LOGE(TAG, "HMAC downstream JTAG enable mode setting failed. (%d)", err); } ESP_LOGD(TAG, "HMAC computation in downstream mode is completed."); @@ -89,7 +90,7 @@ esp_err_t esp_hmac_jtag_enable(hmac_key_id_t key_id, const uint8_t *token) esp_crypto_dma_lock_release(); - return ESP_OK; + return err; } esp_err_t esp_hmac_jtag_disable()