From e041330ed99412c43e93a4a3acf27bae44535d22 Mon Sep 17 00:00:00 2001 From: shchmue Date: Mon, 30 Aug 2021 21:32:57 -0600 Subject: [PATCH] Retry tsec keygen on failure --- source/keys/keys.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/keys/keys.c b/source/keys/keys.c index cafc566..159ea3f 100644 --- a/source/keys/keys.c +++ b/source/keys/keys.c @@ -95,13 +95,17 @@ static int _run_ams_keygen(key_derivation_ctx_t *keys) { tsec_ctxt.fw = tsec_keygen; tsec_ctxt.size = sizeof(tsec_keygen); tsec_ctxt.type = TSEC_FW_TYPE_NEW; - int res = tsec_query(keys->temp_key, &tsec_ctxt); - if (res) { - EPRINTFARGS("ERROR %d running keygen.\n", res); + u32 retries = 0; + while (tsec_query(keys->temp_key, &tsec_ctxt) < 0) { + retries++; + if (retries > 15) { + EPRINTF("Failed to run keygen."); + return -1; + } } - return res; + return 0; } static void _derive_master_keys_from_latest_key(key_derivation_ctx_t *keys, bool is_dev) { @@ -799,7 +803,6 @@ static void _derive_keys() { } else { int res = _run_ams_keygen(keys); if (res) { - EPRINTF("Unable to run keygen."); return; }