diff options
author | Cedric Auger <cauger@provenrun.com> | 2019-09-11 13:41:21 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome@forissier.org> | 2019-09-12 16:46:22 +0200 |
commit | e668b3fe7e108ba2ef44b6b69120470e72a165cb (patch) | |
tree | 317ac8628ce88b5a1145f8a6b1733103e230b9e6 | |
parent | 110aac4733d1a7a1cf423bf2f73a42830141d7a3 (diff) | |
download | optee_test-e668b3fe7e108ba2ef44b6b69120470e72a165cb.tar.gz |
ta: remove 0ms timeouts in the tested TAs
According to GP specification, a 0ms timeout is likely to trigger
a TEE_ERROR_CANCEL error rather than the expected TEE_SUCCESS.
TEE_ERROR_CANCEL is returned when the operation has been queued
by the TEE but did not yet reached the TA.
Signed-off-by: Cedric Auger <cedric.auger@provenrun.com>
Reviewed-by: Jerome Forissier <jerome@forissier.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
-rw-r--r-- | ta/crypt/derive_key_taf.c | 14 | ||||
-rw-r--r-- | ta/crypt/seed_rng_taf.c | 6 | ||||
-rw-r--r-- | ta/os_test/os_test.c | 24 | ||||
-rw-r--r-- | ta/rpc_test/ta_rpc.c | 14 | ||||
-rw-r--r-- | ta/sdp_basic/ta_sdp_basic.c | 12 | ||||
-rw-r--r-- | ta/sims/ta_sims.c | 5 |
6 files changed, 47 insertions, 28 deletions
diff --git a/ta/crypt/derive_key_taf.c b/ta/crypt/derive_key_taf.c index b1c90d2..04bb34a 100644 --- a/ta/crypt/derive_key_taf.c +++ b/ta/crypt/derive_key_taf.c @@ -37,7 +37,8 @@ static TEE_Result derive_unique_key(TEE_TASessionHandle session, params[1].memref.buffer = key; params[1].memref.size = key_size; - res = TEE_InvokeTACommand(session, 0, PTA_SYSTEM_DERIVE_TA_UNIQUE_KEY, + res = TEE_InvokeTACommand(session, TEE_TIMEOUT_INFINITE, + PTA_SYSTEM_DERIVE_TA_UNIQUE_KEY, param_types, params, &ret_origin); if (res != TEE_SUCCESS) EMSG("Failure when calling PTA_SYSTEM_DERIVE_TA_UNIQUE_KEY"); @@ -64,8 +65,8 @@ TEE_Result derive_ta_unique_key_test(uint32_t param_types, TEE_PARAM_TYPE_NONE)) return TEE_ERROR_BAD_PARAMETERS; - res = TEE_OpenTASession(&system_uuid, 0, 0, NULL, &session, - &ret_origin); + res = TEE_OpenTASession(&system_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &session, &ret_origin); if (res != TEE_SUCCESS) return res; @@ -198,8 +199,8 @@ TEE_Result derive_ta_unique_key_test_shm(uint32_t param_types, TEE_PARAM_TYPE_NONE)) return TEE_ERROR_BAD_PARAMETERS; - res = TEE_OpenTASession(&system_uuid, 0, 0, NULL, &session, - &ret_origin); + res = TEE_OpenTASession(&system_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &session, &ret_origin); if (res != TEE_SUCCESS) return res; @@ -209,7 +210,8 @@ TEE_Result derive_ta_unique_key_test_shm(uint32_t param_types, * unsuccessful since we are using an out buffer coming from normal * world. */ - res = TEE_InvokeTACommand(session, 0, PTA_SYSTEM_DERIVE_TA_UNIQUE_KEY, + res = TEE_InvokeTACommand(session, TEE_TIMEOUT_INFINITE, + PTA_SYSTEM_DERIVE_TA_UNIQUE_KEY, param_types, params, &ret_origin); TEE_CloseTASession(session); diff --git a/ta/crypt/seed_rng_taf.c b/ta/crypt/seed_rng_taf.c index f09adc8..2f05421 100644 --- a/ta/crypt/seed_rng_taf.c +++ b/ta/crypt/seed_rng_taf.c @@ -25,13 +25,15 @@ TEE_Result seed_rng_pool(uint32_t param_types, TEE_Param params[4]) if (!params[0].memref.size) return TEE_ERROR_BAD_PARAMETERS; - res = TEE_OpenTASession(&system_uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&system_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("TEE_OpenTASession failed"); goto cleanup_return; } - res = TEE_InvokeTACommand(sess, 0, PTA_SYSTEM_ADD_RNG_ENTROPY, + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + PTA_SYSTEM_ADD_RNG_ENTROPY, param_types, params, &ret_orig); if (res != TEE_SUCCESS) { EMSG("TEE_InvokeTACommand failed"); diff --git a/ta/os_test/os_test.c b/ta/os_test/os_test.c index 84c850b..52d7b49 100644 --- a/ta/os_test/os_test.c +++ b/ta/os_test/os_test.c @@ -465,7 +465,8 @@ static TEE_Result test_mem_access_right(uint32_t param_types, if (res == TEE_SUCCESS) return TEE_ERROR_GENERIC; - res = TEE_OpenTASession(&test_uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&test_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("test_mem_access_right: TEE_OpenTASession failed\n"); goto cleanup_return; @@ -477,7 +478,8 @@ static TEE_Result test_mem_access_right(uint32_t param_types, l_params[0].memref.size = sizeof(buf); l_params[1].memref.buffer = NULL; l_params[1].memref.size = 0; - res = TEE_InvokeTACommand(sess, 0, TA_OS_TEST_CMD_PARAMS_ACCESS, + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + TA_OS_TEST_CMD_PARAMS_ACCESS, l_pts, l_params, &ret_orig); if (res != TEE_SUCCESS) { EMSG("test_mem_access_right: TEE_InvokeTACommand failed\n"); @@ -751,7 +753,8 @@ TEE_Result ta_entry_client_with_timeout(uint32_t param_types, return TEE_ERROR_BAD_PARAMETERS; } - res = TEE_OpenTASession(&os_test_uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&os_test_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG( "ta_entry_client_with_timeout: TEE_OpenTASession failed\n"); @@ -804,7 +807,8 @@ TEE_Result ta_entry_client(uint32_t param_types, TEE_Param params[4]) return TEE_ERROR_OUT_OF_MEMORY; TEE_MemMove(in, sha256_in, sizeof(sha256_in)); - res = TEE_OpenTASession(&crypt_uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&crypt_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("ta_entry_client: TEE_OpenTASession failed\n"); goto cleanup_return; @@ -817,7 +821,8 @@ TEE_Result ta_entry_client(uint32_t param_types, TEE_Param params[4]) l_params[1].memref.buffer = out; l_params[1].memref.size = sizeof(out); - res = TEE_InvokeTACommand(sess, 0, TA_CRYPT_CMD_SHA256, l_pts, l_params, + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + TA_CRYPT_CMD_SHA256, l_pts, l_params, &ret_orig); if (res != TEE_SUCCESS) { EMSG("ta_entry_client: TEE_InvokeTACommand failed\n"); @@ -947,7 +952,8 @@ TEE_Result ta_entry_ta2ta_memref(uint32_t param_types, TEE_Param params[4]) if (param_types != TEE_PARAM_TYPES(0, 0, 0, 0)) return TEE_ERROR_GENERIC; - res = TEE_OpenTASession(&test_uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&test_uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("TEE_OpenTASession failed"); goto cleanup_return; @@ -974,7 +980,8 @@ TEE_Result ta_entry_ta2ta_memref(uint32_t param_types, TEE_Param params[4]) * TA will compute: out = ++inout + in * Expected values after this step: in: 5, inout: 11, out: 16 */ - res = TEE_InvokeTACommand(sess, 0, TA_OS_TEST_CMD_TA2TA_MEMREF_MIX, + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + TA_OS_TEST_CMD_TA2TA_MEMREF_MIX, l_pts, l_params, &ret_orig); if (res != TEE_SUCCESS) { EMSG("TEE_InvokeTACommand failed"); @@ -991,7 +998,8 @@ TEE_Result ta_entry_ta2ta_memref(uint32_t param_types, TEE_Param params[4]) * TA will compute: out = ++inout + in * Expected values after this step: in: 6, inout: 13, out: 19 */ - res = TEE_InvokeTACommand(sess, 0, TA_OS_TEST_CMD_TA2TA_MEMREF_MIX, + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + TA_OS_TEST_CMD_TA2TA_MEMREF_MIX, l_pts, l_params, &ret_orig); if (res != TEE_SUCCESS) { EMSG("TEE_InvokeTACommand failed"); diff --git a/ta/rpc_test/ta_rpc.c b/ta/rpc_test/ta_rpc.c index 29ec724..8a1caeb 100644 --- a/ta/rpc_test/ta_rpc.c +++ b/ta/rpc_test/ta_rpc.c @@ -46,8 +46,8 @@ static TEE_Result rpc_call_cryp(bool sec_mem, uint32_t nParamTypes, TEE_PARAM_TYPES(TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE, TEE_PARAM_TYPE_NONE); - res = TEE_OpenTASession(&cryp_uuid, 0, types, params, &cryp_session, - &origin); + res = TEE_OpenTASession(&cryp_uuid, TEE_TIMEOUT_INFINITE, types, + params, &cryp_session, &origin); if (res != TEE_SUCCESS) { EMSG("rpc_sha256 - TEE_OpenTASession returned 0x%x\n", @@ -87,7 +87,8 @@ static TEE_Result rpc_call_cryp(bool sec_mem, uint32_t nParamTypes, TEE_MemMove(params, pParams, sizeof(params)); } - res = TEE_InvokeTACommand(cryp_session, 0, cmd, types, params, &origin); + res = TEE_InvokeTACommand(cryp_session, TEE_TIMEOUT_INFINITE, cmd, + types, params, &origin); if (res != TEE_SUCCESS) { EMSG("rpc_call_cryp - TEE_InvokeTACommand returned 0x%x\n", (unsigned int)res); @@ -165,15 +166,16 @@ TEE_Result rpc_open(void *session_context, uint32_t param_types, (void)session_context; (void)param_types; - res = TEE_OpenTASession(&uuid, 0, 0, NULL, &session, &orig); + res = TEE_OpenTASession(&uuid, TEE_TIMEOUT_INFINITE, 0, NULL, &session, + &orig); if (res != TEE_SUCCESS) return res; TEE_MemFill(params, 0, sizeof(TEE_Param) * 4); res = - TEE_InvokeTACommand(session, 0, TA_SIMS_CMD_GET_COUNTER, types, par, - &orig); + TEE_InvokeTACommand(session, TEE_TIMEOUT_INFINITE, + TA_SIMS_CMD_GET_COUNTER, types, par, &orig); if (res != TEE_SUCCESS) goto exit; diff --git a/ta/sdp_basic/ta_sdp_basic.c b/ta/sdp_basic/ta_sdp_basic.c index aa2e65c..1decef5 100644 --- a/ta/sdp_basic/ta_sdp_basic.c +++ b/ta/sdp_basic/ta_sdp_basic.c @@ -274,7 +274,8 @@ static TEE_Result cmd_invoke(uint32_t nParamTypes, TEE_Result res = TEE_ERROR_GENERIC; if (sess == TEE_HANDLE_NULL) { - res = TEE_OpenTASession(&uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("SDP basic test TA: TEE_OpenTASession() FAILED \n"); goto cleanup_return; @@ -282,7 +283,8 @@ static TEE_Result cmd_invoke(uint32_t nParamTypes, } - res = TEE_InvokeTACommand(sess, 0, nCommandID, nParamTypes, pParams, &ret_orig); + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + nCommandID, nParamTypes, pParams, &ret_orig); if (res != TEE_SUCCESS) { EMSG("SDP basic test TA: TEE_OpenTASession() FAILED %x/%d\n", res, ret_orig); @@ -306,7 +308,8 @@ static TEE_Result cmd_invoke_pta(uint32_t nParamTypes, TEE_Result res = TEE_ERROR_GENERIC; if (sess == TEE_HANDLE_NULL) { - res = TEE_OpenTASession(&uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(&uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); if (res != TEE_SUCCESS) { EMSG("SDP basic test TA: TEE_OpenTASession() FAILED \n"); goto cleanup_return; @@ -314,7 +317,8 @@ static TEE_Result cmd_invoke_pta(uint32_t nParamTypes, } - res = TEE_InvokeTACommand(sess, 0, nCommandID, nParamTypes, pParams, &ret_orig); + res = TEE_InvokeTACommand(sess, TEE_TIMEOUT_INFINITE, + nCommandID, nParamTypes, pParams, &ret_orig); if (res != TEE_SUCCESS) { EMSG("SDP basic test TA: TEE_OpenTASession() FAILED %x/%d\n", res, ret_orig); diff --git a/ta/sims/ta_sims.c b/ta/sims/ta_sims.c index 65c5ef4..47297c0 100644 --- a/ta/sims/ta_sims.c +++ b/ta/sims/ta_sims.c @@ -69,7 +69,8 @@ TEE_Result sims_open_ta_session(void *session_context, uint32_t param_types, TEE_MemMove(uuid, params[0].memref.buffer, params[0].memref.size); - res = TEE_OpenTASession(uuid, 0, 0, NULL, &sess, &ret_orig); + res = TEE_OpenTASession(uuid, TEE_TIMEOUT_INFINITE, 0, NULL, + &sess, &ret_orig); TEE_Free(uuid); if (res != TEE_SUCCESS) return res; @@ -202,7 +203,7 @@ TEE_Result sims_entry_panic(void *session_context, uint32_t param_types, params[0].memref.size = 0; /* Trigger panic to remote TA */ - (void)TEE_InvokeTACommand(ctx->sess, 0, + (void)TEE_InvokeTACommand(ctx->sess, TEE_TIMEOUT_INFINITE, TA_SIMS_CMD_PANIC, param_types, params, &ret_orig); |