From: John Tsichritzis Date: Fri, 7 Sep 2018 09:42:37 +0000 (+0100) Subject: Additional runtime check for DTB presence in BL2 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a606031e7c1fbb4628aa6f478620eb1862e3d3c5;p=project%2Fbcm63xx%2Fatf.git Additional runtime check for DTB presence in BL2 In Mbed TLS shared heap code, an additional sanity check is introduced in BL2. Currently, when BL2 shares heap with BL1, it expects the heap info to be found in the DTB. If for any reason the DTB is missing, BL2 cannot have the heap address and, hence, Mbed TLS cannot proceed. So, BL2 cannot continue executing and it will eventually crash. With this change we ensure that if the DTB is missing BL2 will panic() instead of having an unpredictable crash. Change-Id: I3045ae43e54b7fe53f23e7c2d4d00e3477b6a446 Signed-off-by: John Tsichritzis --- diff --git a/plat/arm/common/arm_dyn_cfg.c b/plat/arm/common/arm_dyn_cfg.c index f2570a84..58b0d487 100644 --- a/plat/arm/common/arm_dyn_cfg.c +++ b/plat/arm/common/arm_dyn_cfg.c @@ -62,11 +62,15 @@ int arm_get_mbedtls_heap(void **heap_addr, size_t *heap_size) int err; /* If in BL2, retrieve the already allocated heap's info from DTB */ - err = arm_get_dtb_mbedtls_heap_info(tb_fw_cfg_dtb, heap_addr, - heap_size); - if (err < 0) { - ERROR("BL2: unable to retrieve shared Mbed TLS heap " - "information from DTB\n"); + if (tb_fw_cfg_dtb != NULL) { + err = arm_get_dtb_mbedtls_heap_info(tb_fw_cfg_dtb, heap_addr, + heap_size); + if (err < 0) { + ERROR("BL2: unable to retrieve shared Mbed TLS heap information from DTB\n"); + panic(); + } + } else { + ERROR("BL2: DTB missing, cannot get Mbed TLS heap\n"); panic(); } #endif @@ -98,8 +102,7 @@ void arm_bl1_set_mbedtls_heap(void) err = arm_set_dtb_mbedtls_heap_info(tb_fw_cfg_dtb, mbedtls_heap_addr, mbedtls_heap_size); if (err < 0) { - ERROR("BL1: unable to write shared Mbed TLS heap " - "information to DTB\n"); + ERROR("BL1: unable to write shared Mbed TLS heap information to DTB\n"); panic(); } }