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>
This commit is contained in:
parent
c40e021b83
commit
cf7aa03543
@ -38,12 +38,13 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,
|
|||||||
struct spl_boot_device *bootdev)
|
struct spl_boot_device *bootdev)
|
||||||
{
|
{
|
||||||
struct legacy_img_hdr *header;
|
struct legacy_img_hdr *header;
|
||||||
|
int ret;
|
||||||
|
|
||||||
header = (struct legacy_img_hdr *)CONFIG_SPL_LOAD_FIT_ADDRESS;
|
header = (struct legacy_img_hdr *)CONFIG_SPL_LOAD_FIT_ADDRESS;
|
||||||
|
|
||||||
if (CONFIG_IS_ENABLED(IMAGE_PRE_LOAD)) {
|
if (CONFIG_IS_ENABLED(IMAGE_PRE_LOAD)) {
|
||||||
unsigned long addr = (unsigned long)header;
|
unsigned long addr = (unsigned long)header;
|
||||||
int ret = image_pre_load(addr);
|
ret = image_pre_load(addr);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
@ -64,7 +65,7 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,
|
|||||||
debug("Found FIT\n");
|
debug("Found FIT\n");
|
||||||
load.bl_len = 1;
|
load.bl_len = 1;
|
||||||
load.read = spl_ram_load_read;
|
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 {
|
} else {
|
||||||
ulong u_boot_pos = spl_get_image_pos();
|
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);
|
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)
|
#if CONFIG_IS_ENABLED(RAM_DEVICE)
|
||||||
SPL_LOAD_IMAGE_METHOD("RAM", 0, BOOT_DEVICE_RAM, spl_ram_load_image);
|
SPL_LOAD_IMAGE_METHOD("RAM", 0, BOOT_DEVICE_RAM, spl_ram_load_image);
|
||||||
|
Loading…
Reference in New Issue
Block a user