aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/google/chromeos/vboot2/vboot_loader.c')
-rw-r--r--src/vendorcode/google/chromeos/vboot2/vboot_loader.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/vendorcode/google/chromeos/vboot2/vboot_loader.c b/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
index 40f3fa3468..8517a30999 100644
--- a/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
+++ b/src/vendorcode/google/chromeos/vboot2/vboot_loader.c
@@ -73,6 +73,7 @@ static int vboot_active(struct asset *asset)
if (run_verification) {
verstage_main();
} else if (verstage_should_load()) {
+ struct cbfsf file;
struct prog verstage =
PROG_INIT(ASSET_VERSTAGE,
CONFIG_CBFS_PREFIX "/verstage");
@@ -80,9 +81,12 @@ static int vboot_active(struct asset *asset)
printk(BIOS_DEBUG, "VBOOT: Loading verstage.\n");
/* load verstage from RO */
- if (cbfs_boot_locate(prog_rdev(&verstage),
- prog_name(&verstage), NULL) ||
- cbfs_prog_stage_load(&verstage))
+ if (cbfs_boot_locate(&file, prog_name(&verstage), NULL))
+ die("failed to load verstage");
+
+ cbfs_file_data(prog_rdev(&verstage), &file);
+
+ if (cbfs_prog_stage_load(&verstage))
die("failed to load verstage");
/* verify and select a slot */
@@ -162,9 +166,14 @@ static int vboot_locate_by_components(const struct region_device *fw_main,
static int vboot_locate_by_multi_cbfs(const struct region_device *fw_main,
struct asset *asset)
{
- struct cbfsd cbfs;
- cbfs.rdev = fw_main;
- return cbfs_locate(asset_rdev(asset), &cbfs, asset_name(asset), NULL);
+ struct cbfsf file;
+
+ if (cbfs_locate(&file, fw_main, asset_name(asset), NULL))
+ return -1;
+
+ cbfs_file_data(asset_rdev(asset), &file);
+
+ return 0;
}
static int vboot_asset_locate(const struct region_device *fw_main,