From 53d703a5554991c0bc21951b6ddf2628e70467ba Mon Sep 17 00:00:00 2001 From: Yatharth Kochar Date: Fri, 11 Nov 2016 13:57:50 +0000 Subject: Enable TRUSTED_BOARD_BOOT support for LOAD_IMAGE_V2=1 This patch enables TRUSTED_BOARD_BOOT (Authentication and FWU) support, for AArch64, when LOAD_IMAGE_V2 is enabled. This patch also enables LOAD_IMAGE_V2 for ARM platforms. Change-Id: I294a2eebce7a30b6784c80c9d4ac7752808ee3ad Signed-off-by: Yatharth Kochar --- bl1/bl1_fwu.c | 12 +++++++++--- bl1/tbbr/tbbr_img_desc.c | 9 +++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'bl1') diff --git a/bl1/bl1_fwu.c b/bl1/bl1_fwu.c index f3338051..61f2adb0 100644 --- a/bl1/bl1_fwu.c +++ b/bl1/bl1_fwu.c @@ -121,7 +121,6 @@ static int bl1_fwu_image_copy(unsigned int image_id, unsigned int flags) { uintptr_t base_addr; - meminfo_t *mem_layout; /* Get the image descriptor. */ image_desc_t *image_desc = bl1_plat_get_image_desc(image_id); @@ -208,15 +207,22 @@ static int bl1_fwu_image_copy(unsigned int image_id, WARN("BL1-FWU: Copy arguments source/size not mapped\n"); return -ENOMEM; } - +#if LOAD_IMAGE_V2 + /* Check that the image size to load is within limit */ + if (image_size > image_desc->image_info.image_max_size) { + WARN("BL1-FWU: Image size out of bounds\n"); + return -ENOMEM; + } +#else /* Find out how much free trusted ram remains after BL1 load */ - mem_layout = bl1_plat_sec_mem_layout(); + meminfo_t *mem_layout = bl1_plat_sec_mem_layout(); if ((image_desc->image_info.image_base < mem_layout->free_base) || (image_desc->image_info.image_base + image_size > mem_layout->free_base + mem_layout->free_size)) { WARN("BL1-FWU: Memory not available to copy\n"); return -ENOMEM; } +#endif /* Update the image size. */ image_desc->image_info.image_size = image_size; diff --git a/bl1/tbbr/tbbr_img_desc.c b/bl1/tbbr/tbbr_img_desc.c index 7651f1c0..e3bd574d 100644 --- a/bl1/tbbr/tbbr_img_desc.c +++ b/bl1/tbbr/tbbr_img_desc.c @@ -38,6 +38,9 @@ image_desc_t bl1_tbbr_image_descs[] = { SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY, VERSION_1, image_info_t, 0), .image_info.image_base = BL2_BASE, +#if LOAD_IMAGE_V2 + .image_info.image_max_size = BL2_LIMIT - BL2_BASE, +#endif SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY, VERSION_1, entry_point_info_t, SECURE), }, @@ -55,6 +58,9 @@ image_desc_t bl1_tbbr_image_descs[] = { SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY, VERSION_1, image_info_t, 0), .image_info.image_base = SCP_BL2U_BASE, +#if LOAD_IMAGE_V2 + .image_info.image_max_size = SCP_BL2U_LIMIT - SCP_BL2U_BASE, +#endif SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY, VERSION_1, entry_point_info_t, SECURE), }, @@ -65,6 +71,9 @@ image_desc_t bl1_tbbr_image_descs[] = { SET_STATIC_PARAM_HEAD(image_info, PARAM_EP, VERSION_1, image_info_t, 0), .image_info.image_base = BL2U_BASE, +#if LOAD_IMAGE_V2 + .image_info.image_max_size = BL2U_LIMIT - BL2U_BASE, +#endif SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP, VERSION_1, entry_point_info_t, SECURE | EXECUTABLE), .ep_info.pc = BL2U_BASE, -- cgit v1.2.3