From ae029d910967067d588a3d56dcf19a20b34a1c86 Mon Sep 17 00:00:00 2001 From: Randall Spangler Date: Mon, 19 Jul 2010 18:26:35 -0700 Subject: [PATCH] Fix checking boot flags in developer mode. Should only check in recovery or normal modes. BUG=http://code.google.com/p/chrome-os-partner/issues/detail?id=497 Review URL: http://codereview.chromium.org/2806058 --- firmware/lib/vboot_kernel.c | 27 +++++++++++++++------------ firmware/version.c | 2 +- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/firmware/lib/vboot_kernel.c b/firmware/lib/vboot_kernel.c index 7996564c15..609fe9e0f9 100644 --- a/firmware/lib/vboot_kernel.c +++ b/firmware/lib/vboot_kernel.c @@ -211,18 +211,21 @@ int LoadKernel(LoadKernelParams* params) { continue; } - /* Check the key block flags against the current boot mode */ - if (!(key_block->key_block_flags & - (is_dev ? KEY_BLOCK_FLAG_DEVELOPER_1 : - KEY_BLOCK_FLAG_DEVELOPER_0))) { - VBDEBUG(("Developer flag mismatch.\n")); - continue; - } - if (!(key_block->key_block_flags & - (is_rec ? KEY_BLOCK_FLAG_RECOVERY_1 : - KEY_BLOCK_FLAG_RECOVERY_0))) { - VBDEBUG(("Recovery flag mismatch.\n")); - continue; + /* Check the key block flags against the current boot mode in normal + * and recovery modes (not in developer mode booting from SSD). */ + if (is_rec || is_normal) { + if (!(key_block->key_block_flags & + (is_dev ? KEY_BLOCK_FLAG_DEVELOPER_1 : + KEY_BLOCK_FLAG_DEVELOPER_0))) { + VBDEBUG(("Developer flag mismatch.\n")); + continue; + } + if (!(key_block->key_block_flags & + (is_rec ? KEY_BLOCK_FLAG_RECOVERY_1 : + KEY_BLOCK_FLAG_RECOVERY_0))) { + VBDEBUG(("Recovery flag mismatch.\n")); + continue; + } } /* Check for rollback of key version. Note this is implicitly diff --git a/firmware/version.c b/firmware/version.c index c40f4e9771..256d9220c6 100644 --- a/firmware/version.c +++ b/firmware/version.c @@ -1 +1 @@ -char* VbootVersion = "VBOOv=45bbe227"; +char* VbootVersion = "VBOOv=e5373ca7";