From 7fb5f45422e6ca95dc63da1a0fe48f752eefcd38 Mon Sep 17 00:00:00 2001 From: Jens Wiklander Date: Mon, 4 Jan 2021 08:34:53 +0100 Subject: core: remove temporary external DT mapping During boot the external DT is mapped while processing the DT. Once OP-TEE is done with the DT it should be unmapped to avoid stale mappings that might cause problems later. Fix this by calling core_mmu_rem_mapping() from release_external_dt() just before jumping to normal world. Fixes: https://github.com/OP-TEE/optee_os/issues/4278 Reviewed-by: Jerome Forissier Reviewed-by: Etienne Carriere Signed-off-by: Jens Wiklander --- core/arch/arm/kernel/boot.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/arch/arm/kernel/boot.c b/core/arch/arm/kernel/boot.c index 02eac0e7..891d2a5e 100644 --- a/core/arch/arm/kernel/boot.c +++ b/core/arch/arm/kernel/boot.c @@ -610,6 +610,10 @@ static TEE_Result release_external_dt(void) panic(); } + if (core_mmu_remove_mapping(MEM_AREA_EXT_DT, external_dt.blob, + CFG_DTB_MAX_SIZE)) + panic("Failed to remove temporary Device Tree mapping"); + /* External DTB no more reached, reset pointer to invalid */ external_dt.blob = NULL; -- cgit v1.2.3