From: Nikita Shubin <n.shubin@yadro.com>
Date: Mon, 12 Dec 2022 08:03:35 +0000 (+0300)
Subject: common: spl: ram: fix return code
X-Git-Tag: v2025.01-rc5-pxa1908~1153^2~10
X-Git-Url: http://git.dujemihanovic.xyz/img/html/index.html?a=commitdiff_plain;h=cf7aa035433a73969a8e7b8e3261410bdeb0a214;p=u-boot.git

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 <n.shubin@yadro.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---

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);