Index: firmware/lib/vboot_kernel.c |
diff --git a/firmware/lib/vboot_kernel.c b/firmware/lib/vboot_kernel.c |
index 8ee45a7eabb3b6aa7bf728bd50005f1bfa3f75aa..bd8865bd6e2bb72e0367dc41d9827d518daf5cb2 100644 |
--- a/firmware/lib/vboot_kernel.c |
+++ b/firmware/lib/vboot_kernel.c |
@@ -146,8 +146,16 @@ int LoadKernel(LoadKernelParams* params) { |
return LOAD_KERNEL_INVALID; |
} |
- is_dev = (BOOT_FLAG_DEVELOPER & params->boot_flags ? 1 : 0); |
is_rec = (BOOT_FLAG_RECOVERY & params->boot_flags ? 1 : 0); |
+ if (is_rec || (BOOT_FLAG_DEV_FIRMWARE & params->boot_flags)) { |
+ /* Recovery or developer firmware, so accurately represent the |
+ * state of the developer switch for the purposes of verified boot. */ |
+ is_dev = (BOOT_FLAG_DEVELOPER & params->boot_flags ? 1 : 0); |
+ } else { |
+ /* Normal firmware always does a fully verified boot regardless of |
+ * the state of the developer switch. */ |
+ is_dev = 0; |
+ } |
is_normal = (!is_dev && !is_rec); |
/* Clear output params in case we fail */ |