mb/sifive/hifive-unleashed: Check for errors in fixup_fdt

It is possible that cbfs_boot_map_with_leak() and malloc() could fail,
so detect those conditions and print error messages if they do.

Change-Id: I34951da0b73028c4c89446cb1779a72422997325
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Found-by: Coverity CID 1399147
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33134
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Xiang Wang <wxjstz@126.com>
This commit is contained in:
Jacob Garber 2019-05-30 16:11:41 -06:00 committed by Patrick Georgi
parent 38b7445ad2
commit 7da638c20e
1 changed files with 12 additions and 0 deletions

View File

@ -15,6 +15,7 @@
#include <stdint.h>
#include <string.h>
#include <console/console.h>
#include <soc/otp.h>
#include <soc/sdram.h>
#include <cbfs.h>
@ -86,6 +87,11 @@ static void fixup_fdt(void *unused)
/* load flat dt from cbfs */
fdt_rom = cbfs_boot_map_with_leak("fallback/DTB", CBFS_TYPE_RAW, NULL);
if (fdt_rom == NULL) {
printk(BIOS_ERR, "Unable to load fallback/DTB from CBFS\n");
return;
}
/* Expand DT into a tree */
tree = fdt_unflatten(fdt_rom);
@ -95,6 +101,12 @@ static void fixup_fdt(void *unused)
/* convert the tree to a flat dt */
void *dt = malloc(dt_flat_size(tree));
if (dt == NULL) {
printk(BIOS_ERR, "Unable to allocate memory for flat device tree\n");
return;
}
dt_flatten(tree, dt);
/* update HLS */