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
diff --git a/firmware/lib/vboot_kernel.c b/firmware/lib/vboot_kernel.c
index 7996564..609fe9e 100644
--- a/firmware/lib/vboot_kernel.c
+++ b/firmware/lib/vboot_kernel.c
@@ -211,18 +211,21 @@
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