From 954d488a9798f8fda675c6b57c571b469b298f04 Mon Sep 17 00:00:00 2001 From: Yoshifumi Hosoya Date: Sun, 23 Apr 2023 21:11:15 +0900 Subject: [PATCH] rcar-gen3: plat: BL2: fix Incorrect Address Range Calculation Check against all address overlap cases Reviewed-by: Tomer Fichman Signed-off-by: Yoshifumi Hosoya --- drivers/renesas/common/io/io_rcar.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/renesas/common/io/io_rcar.c b/drivers/renesas/common/io/io_rcar.c index 9b29a5be81..21ed411137 100644 --- a/drivers/renesas/common/io/io_rcar.c +++ b/drivers/renesas/common/io/io_rcar.c @@ -335,13 +335,18 @@ static int32_t check_load_area(uintptr_t dst, uintptr_t len) * 2. check: * | IMAGE n | * | IMAGE n+1 | + * 3. check: + * | IMAGE n | + * | IMAGE n+1 | * * */ - if (((dst > addr_loaded[n].dest) && - (dst < addr_loaded[n].dest + addr_loaded[n].length)) || - (((dst < addr_loaded[n].dest) && - (dst + len)) > addr_loaded[n].dest)) { - ERROR("BL2: image is inside a previous image area.\n"); + if (((dst >= addr_loaded[n].dest) && + (dst <= addr_loaded[n].dest + addr_loaded[n].length)) || + ((dst + len >= addr_loaded[n].dest) && + (dst + len <= addr_loaded[n].dest + addr_loaded[n].length)) || + ((dst <= addr_loaded[n].dest) && + (dst + len >= addr_loaded[n].dest + addr_loaded[n].length))) { + ERROR("BL2: next image overlap a previous image area.\n"); result = IO_FAIL; } }