diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2018-11-22 15:46:13 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2018-11-27 14:27:17 +0100 |
commit | 2f0cd8af66a8b3ee20cd5e4936cbe912e68b69fe (patch) | |
tree | 6ba582851ed65d7cb34d9bd057c786625cab8a05 /core/arch/arm/kernel/pseudo_ta.c | |
parent | 9e5923381a5c001594baebfa7975965d42a0f7c1 (diff) |
core: base pseudo_ta_register() on scatter array
The pseudo_ta_register() implementation is now based on scatter array.
Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core/arch/arm/kernel/pseudo_ta.c')
-rw-r--r-- | core/arch/arm/kernel/pseudo_ta.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/core/arch/arm/kernel/pseudo_ta.c b/core/arch/arm/kernel/pseudo_ta.c index a6aa06c6..703d1dea 100644 --- a/core/arch/arm/kernel/pseudo_ta.c +++ b/core/arch/arm/kernel/pseudo_ta.c @@ -233,17 +233,20 @@ bool is_pseudo_ta_ctx(struct tee_ta_ctx *ctx) /* Insures declared pseudo TAs conforms with core expectations */ static TEE_Result verify_pseudo_tas_conformance(void) { - const struct pseudo_ta_head *start = &__start_ta_head_section; - const struct pseudo_ta_head *end = &__stop_ta_head_section; + const struct pseudo_ta_head *start = + SCATTERED_ARRAY_BEGIN(pseudo_tas, struct pseudo_ta_head); + const struct pseudo_ta_head *end = + SCATTERED_ARRAY_END(pseudo_tas, struct pseudo_ta_head); const struct pseudo_ta_head *pta; for (pta = start; pta < end; pta++) { const struct pseudo_ta_head *pta2; /* PTAs must all have a specific UUID */ - for (pta2 = pta + 1; pta2 < end; pta2++) + for (pta2 = pta + 1; pta2 < end; pta2++) { if (!memcmp(&pta->uuid, &pta2->uuid, sizeof(TEE_UUID))) goto err; + } if (!pta->name || (pta->flags & PTA_MANDATORY_FLAGS) != PTA_MANDATORY_FLAGS || @@ -272,9 +275,10 @@ TEE_Result tee_ta_init_pseudo_ta_session(const TEE_UUID *uuid, DMSG("Lookup pseudo TA %pUl", (void *)uuid); - ta = &__start_ta_head_section; + ta = SCATTERED_ARRAY_BEGIN(pseudo_tas, struct pseudo_ta_head); while (true) { - if (ta >= &__stop_ta_head_section) + if (ta >= SCATTERED_ARRAY_END(pseudo_tas, + struct pseudo_ta_head)) return TEE_ERROR_ITEM_NOT_FOUND; if (memcmp(&ta->uuid, uuid, sizeof(TEE_UUID)) == 0) break; |