From 05348de088a291486b6fc0ba24bc136cd8f0fbb1 Mon Sep 17 00:00:00 2001 From: Jens Wiklander Date: Tue, 4 Jul 2017 21:08:31 +0200 Subject: [PATCH] core: pager: fix tee_pager_set_uta_area_attr() Adds missing synchronization, dsb_ishst(), required to make sure that translation table update is visible after the final update of the attributes of a page. Reviewed-by: Joakim Bech Reviewed-by: Etienne Carriere Tested-by: Jens Wiklander (Hikey) Signed-off-by: Jens Wiklander --- core/arch/arm/mm/tee_pager.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/arch/arm/mm/tee_pager.c b/core/arch/arm/mm/tee_pager.c index 2a106e4dfe3..7e128d5164b 100644 --- a/core/arch/arm/mm/tee_pager.c +++ b/core/arch/arm/mm/tee_pager.c @@ -901,6 +901,11 @@ bool tee_pager_set_uta_area_attr(struct user_ta_ctx *utc, vaddr_t base, tee_pager_save_page(pmem, a); area_set_entry(pmem->area, pmem->pgidx, pa, f); + /* + * Make sure the table update is visible before + * continuing. + */ + dsb_ishst(); if (flags & TEE_MATTR_UX) { void *va = (void *)area_idx2va(pmem->area,