aboutsummaryrefslogtreecommitdiff
path: root/common/spl
diff options
context:
space:
mode:
authorNikita Shubin2022-12-12 11:03:35 +0300
committerTom Rini2023-01-12 11:25:46 -0500
commitcf7aa035433a73969a8e7b8e3261410bdeb0a214 (patch)
tree0e4b18bb2e0f1a0eb7eec7f10c38255c045e94b7 /common/spl
parentc40e021b83d9db9aec736a0cb992fd84d2e63c02 (diff)
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>
Diffstat (limited to 'common/spl')
-rw-r--r--common/spl/spl_ram.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/common/spl/spl_ram.c b/common/spl/spl_ram.c
index 5753bd228f7..8139a203273 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);