[coreboot-gerrit] New patch to review for coreboot: e499b82 vboot2: avoid fall through when hard_reset is not implemented

Aaron Durbin (adurbin@google.com) gerrit at coreboot.org
Mon Mar 23 23:22:41 CET 2015


Aaron Durbin (adurbin at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8884

-gerrit

commit e499b82488521aaa40825f768cca873cc24f9d55
Author: Daisuke Nojiri <dnojiri at chromium.org>
Date:   Tue Sep 23 15:53:56 2014 -0700

    vboot2: avoid fall through when hard_reset is not implemented
    
    this change makes prevent execution from falling through to unverified
    code when hard_reset is not implemented. it also includes a few touch-ups.
    
    BUG=None
    TEST=Booted Veyron Pinky. Verified firmware selection in the log.
    BRANCH=None
    
    Original-Change-Id: I9b02ab766172a62c98b434c29f310bc4a44f342d
    Original-Signed-off-by: Daisuke Nojiri <dnojiri at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/219625
    Original-Reviewed-by: Daisuke Nojiri <dnojiri at chromium.org>
    Original-Commit-Queue: Daisuke Nojiri <dnojiri at chromium.org>
    Original-Tested-by: Daisuke Nojiri <dnojiri at chromium.org>
    (cherry picked from commit d1f5207d83d2247b55f2bb9d02ac843305fc3ded)
    
    Change-Id: I99dd5a2ca3a5369accb14408ea9d266bf60e7132
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/vendorcode/google/chromeos/Kconfig      | 2 +-
 src/vendorcode/google/chromeos/Makefile.inc | 2 +-
 src/vendorcode/google/chromeos/chromeos.c   | 3 ++-
 src/vendorcode/google/chromeos/chromeos.h   | 3 ++-
 src/vendorcode/google/chromeos/verstub.c    | 2 +-
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/vendorcode/google/chromeos/Kconfig b/src/vendorcode/google/chromeos/Kconfig
index 4e71c3b..3ee9243 100644
--- a/src/vendorcode/google/chromeos/Kconfig
+++ b/src/vendorcode/google/chromeos/Kconfig
@@ -100,7 +100,7 @@ config VBOOT_VERIFY_FIRMWARE
 config VBOOT2_VERIFY_FIRMWARE
 	bool "Firmware Verification with vboot2"
 	default n
-	depends on CHROMEOS
+	depends on CHROMEOS && HAVE_HARD_RESET
 	help
 	  Enabling VBOOT2_VERIFY_FIRMWARE will use vboot2 to verify the romstage
 	  and boot loader.
diff --git a/src/vendorcode/google/chromeos/Makefile.inc b/src/vendorcode/google/chromeos/Makefile.inc
index e9eef4a..7e98860 100644
--- a/src/vendorcode/google/chromeos/Makefile.inc
+++ b/src/vendorcode/google/chromeos/Makefile.inc
@@ -104,7 +104,7 @@ verstage-c-ccopts += -D__PRE_RAM__ -D__VER_STAGE__
 verstage-S-ccopts += -D__PRE_RAM__ -D__VER_STAGE__
 
 ifeq ($(CONFIG_RETURN_FROM_VERSTAGE),y)
-bootblock-y += verstub.c
+bootblock-y += verstub.c chromeos.c
 else
 verstage-y += verstub.c
 endif
diff --git a/src/vendorcode/google/chromeos/chromeos.c b/src/vendorcode/google/chromeos/chromeos.c
index 5696aec..3a499d5 100644
--- a/src/vendorcode/google/chromeos/chromeos.c
+++ b/src/vendorcode/google/chromeos/chromeos.c
@@ -173,7 +173,7 @@ struct vboot_components *vboot_locate_components(struct vboot_region *region)
 	size_t req_size;
 	struct vboot_components *vbc;
 
-	req_size = sizeof(*region);
+	req_size = sizeof(*vbc);
 	req_size += sizeof(struct vboot_component_entry) *
 			MAX_PARSED_FW_COMPONENTS;
 
@@ -259,6 +259,7 @@ struct vb2_working_data * const vboot_get_working_data(void)
 void vboot_reboot(void)
 {
 	hard_reset();
+	die("failed to reboot");
 }
 
 #endif
diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h
index 0d8da8f..4395506 100644
--- a/src/vendorcode/google/chromeos/chromeos.h
+++ b/src/vendorcode/google/chromeos/chromeos.h
@@ -118,9 +118,10 @@ static inline void chromeos_ram_oops_init(chromeos_acpi_t *chromeos) {}
 static inline void chromeos_reserve_ram_oops(struct device *dev, int idx) {}
 #endif /* CONFIG_CHROMEOS_RAMOOPS */
 
+void vboot2_verify_firmware(void);
+
 #if CONFIG_VBOOT2_VERIFY_FIRMWARE
 void *vboot_load_ramstage(void);
-void vboot2_verify_firmware(void);
 void verstage_main(void);
 void *vboot_load_stage(int stage_index,
 		       struct vboot_region *fw_main,
diff --git a/src/vendorcode/google/chromeos/verstub.c b/src/vendorcode/google/chromeos/verstub.c
index a4ed77f..e295b25 100644
--- a/src/vendorcode/google/chromeos/verstub.c
+++ b/src/vendorcode/google/chromeos/verstub.c
@@ -61,7 +61,7 @@ void vboot2_verify_firmware(void)
 	/* load verstage from RO */
 	entry = cbfs_load_stage(CBFS_DEFAULT_MEDIA,
 				CONFIG_CBFS_PREFIX "/verstage");
-	if (entry == -1)
+	if (entry == (void *)-1)
 		die("failed to load verstage");
 
 	/* verify and select a slot */



More information about the coreboot-gerrit mailing list