From afb1063e9a42e9ab329213e27f5716e840b4e617 Mon Sep 17 00:00:00 2001 From: Nikita Shubin Date: Mon, 12 Dec 2022 11:03:35 +0300 Subject: [PATCH] common: spl: ram: fix return code Instead of always retuning success, return actual result of load_simple_fit_image or spl_parse_image_header, otherwise we might end up jumping on uninitialized spl_image->entry_point. Signed-off-by: Nikita Shubin Reviewed-by: Stefan Roese --- common/spl/spl_ram.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/spl/spl_ram.c b/common/spl/spl_ram.c index 5753bd228f..8139a20327 100644 --- a/common/spl/spl_ram.c +++ b/common/spl/spl_ram.c @@ -38,12 +38,13 @@ static int spl_ram_load_image(struct spl_image_info *spl_image, struct spl_boot_device *bootdev) { struct legacy_img_hdr *header; + int ret; header = (struct legacy_img_hdr *)CONFIG_SPL_LOAD_FIT_ADDRESS; if (CONFIG_IS_ENABLED(IMAGE_PRE_LOAD)) { unsigned long addr = (unsigned long)header; - int ret = image_pre_load(addr); + ret = image_pre_load(addr); if (ret) return ret; @@ -64,7 +65,7 @@ static int spl_ram_load_image(struct spl_image_info *spl_image, debug("Found FIT\n"); load.bl_len = 1; load.read = spl_ram_load_read; - spl_load_simple_fit(spl_image, &load, 0, header); + ret = spl_load_simple_fit(spl_image, &load, 0, header); } else { ulong u_boot_pos = spl_get_image_pos(); @@ -85,10 +86,10 @@ static int spl_ram_load_image(struct spl_image_info *spl_image, } header = (struct legacy_img_hdr *)map_sysmem(u_boot_pos, 0); - spl_parse_image_header(spl_image, bootdev, header); + ret = spl_parse_image_header(spl_image, bootdev, header); } - return 0; + return ret; } #if CONFIG_IS_ENABLED(RAM_DEVICE) SPL_LOAD_IMAGE_METHOD("RAM", 0, BOOT_DEVICE_RAM, spl_ram_load_image); -- 2.39.5