vboot: stop setting context mode flag in VBSLK
Stop setting mode flags (developer or recovery)
in VbSelectAndLoadKernel; this has already been
done in firmware verification.
BUG=b:124141368, chromium:994060
TEST=make clean && make runtests
BRANCH=none
Change-Id: I659f406e0182f809ad46c92a2597b05f685d45dd
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2054265
Reviewed-by: Joel Kitching <kitching@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 822f1cb..c5328d2 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -228,13 +228,6 @@
{
struct vb2_shared_data *sd = vb2_get_sd(ctx);
- /* Set selected boot mode in context object.
- TODO: Confirm that this can be removed with persistent context. */
- if (sd->recovery_reason)
- ctx->flags |= VB2_CONTEXT_RECOVERY_MODE;
- if (sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED)
- ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
-
/* Translate vboot2 flags and fields into vboot1. */
if (ctx->flags & VB2_CONTEXT_EC_SYNC_SUPPORTED)
shared->flags |= VBSD_EC_SOFTWARE_SYNC;
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index 6ac25bd..8b73650 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -85,6 +85,9 @@
static void test_slk(vb2_error_t retval, int recovery_reason, const char *desc)
{
+ if (sd->recovery_reason)
+ ctx->flags |= VB2_CONTEXT_RECOVERY_MODE;
+
expected_recovery_reason = recovery_reason;
TEST_EQ(VbSelectAndLoadKernel(ctx, shared, &kparams), retval, desc);
TEST_EQ(current_recovery_reason, expected_recovery_reason,
@@ -284,19 +287,19 @@
/* Boot dev */
reset_common_data();
- sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
+ ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
vbboot_retval = -2;
test_slk(VB2_ERROR_MOCK, 0, "Dev boot bad");
reset_common_data();
- sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
+ ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
new_version = 0x20003;
test_slk(0, 0, "Dev doesn't roll forward");
TEST_EQ(kernel_version, 0x10002, " version");
/* Boot dev - phase1 failure */
reset_common_data();
- sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
+ ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
kernel_phase1_retval = VB2_ERROR_MOCK;
test_slk(VB2_ERROR_MOCK, 0, "Dev phase1 failure");