diff options
author | Joel Kitching <kitching@google.com> | 2020-01-10 01:50:45 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-10 19:50:51 +0000 |
commit | 7d9ddea16d8face9fd56199bcdda0aa34c556071 (patch) | |
tree | 9726d8ef77190eed56a89915130b68deb76036d1 | |
parent | ffcc2c5daa9032a21b80daf13fba2fc4ab5f8fd1 (diff) | |
download | vboot-7d9ddea16d8face9fd56199bcdda0aa34c556071.tar.gz |
vboot: use vboot 2 flags for checking rec/dev mode
Use vboot 2 flags for checking whether dev mode is enabled, and
whether manual recovery was requested.
VBSD_BOOT_DEV_SWITCH_ON --> VB2_SD_FLAG_DEV_MODE_ENABLED
VBSD_BOOT_REC_SWITCH_ON --> VB2_SD_FLAG_MANUAL_RECOVERY
BUG=b:124141368, chromium:1038260
TEST=make clean && make runtests
BRANCH=none
Change-Id: Idb439f658391f46170704a0fd614853054e1c64d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1992852
Tested-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | firmware/2lib/2misc.c | 2 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 2 | ||||
-rw-r--r-- | firmware/lib/vboot_ui.c | 9 | ||||
-rw-r--r-- | firmware/lib/vboot_ui_menu.c | 6 | ||||
-rw-r--r-- | tests/vboot_api_kernel2_tests.c | 42 | ||||
-rw-r--r-- | tests/vboot_api_kernel4_tests.c | 4 | ||||
-rw-r--r-- | tests/vboot_detach_menu_tests.c | 16 |
7 files changed, 39 insertions, 42 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c index 1cd96929..bab4b211 100644 --- a/firmware/2lib/2misc.c +++ b/firmware/2lib/2misc.c @@ -417,7 +417,7 @@ int vb2_allow_recovery(struct vb2_context *ctx) return 0; /* Now we confidently check the recovery switch state at boot */ - return !!(vb2_get_sd(ctx)->vbsd->flags & VBSD_BOOT_REC_SWITCH_ON); + return !!(vb2_get_sd(ctx)->flags & VB2_SD_FLAG_MANUAL_RECOVERY); } int vb2api_need_reboot_for_display(struct vb2_context *ctx) diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 46c268a8..85bc2b2f 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -233,7 +233,7 @@ static vb2_error_t vb2_kernel_setup(struct vb2_context *ctx, /* Translate vboot1 flags back to vboot2 */ if (shared->recovery_reason) ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; - if (shared->flags & VBSD_BOOT_DEV_SWITCH_ON) + if (vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE; /* diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c index c48478d8..d584ac8b 100644 --- a/firmware/lib/vboot_ui.c +++ b/firmware/lib/vboot_ui.c @@ -504,7 +504,6 @@ static vb2_error_t vb2_developer_ui(struct vb2_context *ctx) { struct vb2_shared_data *sd = vb2_get_sd(ctx); struct vb2_gbb_header *gbb = vb2_get_gbb(ctx); - VbSharedDataHeader *shared = sd->vbsd; uint32_t disable_dev_boot = 0; uint32_t use_usb = 0; @@ -599,10 +598,10 @@ static vb2_error_t vb2_developer_ui(struct vb2_context *ctx) VBOOT_FALLTHROUGH; case ' ': /* See if we should disable virtual dev-mode switch. */ - VB2_DEBUG("shared->flags=%#x\n", shared->flags); + VB2_DEBUG("sd->flags=%#x\n", sd->flags); /* Sanity check, should never fail. */ - VB2_ASSERT(shared->flags & VBSD_BOOT_DEV_SWITCH_ON); + VB2_ASSERT(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED); /* Stop the countdown while we go ask... */ if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { @@ -844,8 +843,8 @@ static vb2_error_t recovery_ui(struct vb2_context *ctx) * - user forced recovery mode */ if (key == VB_KEY_CTRL('D') && - !(shared->flags & VBSD_BOOT_DEV_SWITCH_ON) && - (shared->flags & VBSD_BOOT_REC_SWITCH_ON)) { + !(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) && + (sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY)) { if (!(shared->flags & VBSD_BOOT_REC_SWITCH_VIRTUAL) && VbExGetSwitches( VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED)) { diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c index f74f6d50..31ab3c16 100644 --- a/firmware/lib/vboot_ui_menu.c +++ b/firmware/lib/vboot_ui_menu.c @@ -260,7 +260,7 @@ static vb2_error_t enter_to_dev_menu(struct vb2_context *ctx) { const char dev_already_on[] = "WARNING: TODEV rejected, developer mode is already on.\n"; - if (vb2_get_sd(ctx)->vbsd->flags & VBSD_BOOT_DEV_SWITCH_ON) { + if (vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) { vb2_flash_screen(ctx); vb2_error_notify(dev_already_on, NULL, VB_BEEP_NOT_ALLOWED); return VBERROR_KEEP_LOOPING; @@ -352,10 +352,8 @@ static vb2_error_t altfw_action(struct vb2_context *ctx) /* Action that enables developer mode and reboots. */ static vb2_error_t to_dev_action(struct vb2_context *ctx) { - uint32_t vbsd_flags = vb2_get_sd(ctx)->vbsd->flags; - /* Sanity check, should never happen. */ - if ((vbsd_flags & VBSD_BOOT_DEV_SWITCH_ON) || + if ((vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) || !vb2_allow_recovery(ctx)) return VBERROR_KEEP_LOOPING; diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c index 712fa707..0b2b97be 100644 --- a/tests/vboot_api_kernel2_tests.c +++ b/tests/vboot_api_kernel2_tests.c @@ -621,7 +621,7 @@ static void VbBootDevTest(void) /* Space asks to disable virtual dev switch */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = ' '; mock_keypress[1] = VB_KEY_ENTER; TEST_EQ(VbBootDeveloper(ctx), VBERROR_REBOOT_REQUIRED, @@ -637,7 +637,7 @@ static void VbBootDevTest(void) /* Space-space doesn't disable it */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = ' '; mock_keypress[1] = ' '; mock_keypress[2] = VB_KEY_ESC; @@ -652,7 +652,7 @@ static void VbBootDevTest(void) /* Enter doesn't by default */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = VB_KEY_ENTER; mock_keypress[1] = VB_KEY_ENTER; vbtlk_expect_fixed = 1; @@ -660,7 +660,7 @@ static void VbBootDevTest(void) /* Enter does if GBB flag set */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; gbb.flags |= VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM; mock_keypress[0] = VB_KEY_ENTER; mock_keypress[1] = VB_KEY_ENTER; @@ -669,7 +669,7 @@ static void VbBootDevTest(void) /* Tonorm ignored if GBB forces dev switch on */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON; mock_keypress[0] = ' '; mock_keypress[1] = VB_KEY_ENTER; @@ -679,7 +679,7 @@ static void VbBootDevTest(void) /* Shutdown requested at tonorm screen */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = ' '; MockGpioAfter(3, GPIO_SHUTDOWN); TEST_EQ(VbBootDeveloper(ctx), @@ -692,7 +692,7 @@ static void VbBootDevTest(void) /* Shutdown requested by keyboard at tonorm screen */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS; TEST_EQ(VbBootDeveloper(ctx), VBERROR_SHUTDOWN_REQUESTED, @@ -1069,7 +1069,7 @@ static void VbBootDevTest(void) /* Shutdown requested when dev disabled */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT; MockGpioAfter(1, GPIO_SHUTDOWN); TEST_EQ(VbBootDeveloper(ctx), @@ -1080,7 +1080,7 @@ static void VbBootDevTest(void) /* Shutdown requested by keyboard when dev disabled */ ResetMocks(); - shared->flags = VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED; fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT; mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS; TEST_EQ(VbBootDeveloper(ctx), @@ -1102,7 +1102,7 @@ static void VbBootRecTestGpio(uint32_t first, uint32_t second, uint32_t third, uint32_t confirm, const char *msg) { ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; trust_ec = 1; mock_keypress[0] = VB_KEY_CTRL('D'); @@ -1161,7 +1161,7 @@ static void VbBootRecTest(void) mock_gpio[2].count = 10; mock_gpio[3].gpio_flags = 0; mock_gpio[3].count = 100; - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; trust_ec = 1; vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; vbtlk_expect_removable = 1; @@ -1189,7 +1189,7 @@ static void VbBootRecTest(void) MockGpioAfter(10, GPIO_SHUTDOWN); mock_num_disks[0] = 1; mock_num_disks[1] = 1; - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; TEST_EQ(VbBootRecovery(ctx), VBERROR_SHUTDOWN_REQUESTED, "Broken (dev)"); @@ -1213,7 +1213,7 @@ static void VbBootRecTest(void) MockGpioAfter(10, GPIO_SHUTDOWN); mock_num_disks[0] = 1; mock_num_disks[1] = 1; - shared->flags |= VBSD_BOOT_REC_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY; TEST_EQ(VbBootRecovery(ctx), VBERROR_SHUTDOWN_REQUESTED, "No remove in rec"); @@ -1243,7 +1243,7 @@ static void VbBootRecTest(void) /* Ctrl+D ignored for many reasons... */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; MockGpioAfter(10, GPIO_SHUTDOWN); mock_keypress[0] = VB_KEY_CTRL('D'); trust_ec = 0; @@ -1255,7 +1255,7 @@ static void VbBootRecTest(void) " todev screen"); ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON | VBSD_BOOT_DEV_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY | VB2_SD_FLAG_DEV_MODE_ENABLED; trust_ec = 1; MockGpioAfter(10, GPIO_SHUTDOWN); mock_keypress[0] = VB_KEY_CTRL('D'); @@ -1282,7 +1282,7 @@ static void VbBootRecTest(void) /* Ctrl+D ignored because the physical presence switch is still pressed and we don't like that. */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; trust_ec = 1; mock_keypress[0] = VB_KEY_CTRL('D'); mock_gpio[0].gpio_flags = GPIO_PRESENCE; @@ -1298,7 +1298,7 @@ static void VbBootRecTest(void) /* Ctrl+D then space means don't enable */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; MockGpioAfter(2, GPIO_SHUTDOWN); vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; trust_ec = 1; @@ -1318,7 +1318,7 @@ static void VbBootRecTest(void) /* Ctrl+D then enter means enable */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; MockGpioAfter(10, GPIO_SHUTDOWN); vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; trust_ec = 1; @@ -1414,7 +1414,7 @@ static void VbBootRecTest(void) /* Handle TPM error in enabling dev mode */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; MockGpioAfter(10, GPIO_SHUTDOWN); vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; trust_ec = 1; @@ -1429,7 +1429,7 @@ static void VbBootRecTest(void) /* Test Diagnostic Mode via Ctrl-C - display available */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; trust_ec = 1; vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; MockGpioAfter(10, GPIO_SHUTDOWN); @@ -1452,7 +1452,7 @@ static void VbBootRecTest(void) /* Test Diagnostic Mode via F12 - display disabled */ ResetMocks(); - shared->flags = VBSD_BOOT_REC_SWITCH_ON; + sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY; sd->flags &= ~VB2_SD_FLAG_DISPLAY_AVAILABLE; trust_ec = 1; vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND; diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c index 80c8099a..71efb2cb 100644 --- a/tests/vboot_api_kernel4_tests.c +++ b/tests/vboot_api_kernel4_tests.c @@ -284,12 +284,12 @@ static void VbSlkTest(void) /* Boot dev */ ResetMocks(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; vbboot_retval = -2; test_slk(VB2_ERROR_MOCK, 0, "Dev boot bad"); ResetMocks(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; new_version = 0x20003; test_slk(0, 0, "Dev doesn't roll forward"); TEST_EQ(kernel_version, 0x10002, " version"); diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c index c2ed73a4..705c874e 100644 --- a/tests/vboot_detach_menu_tests.c +++ b/tests/vboot_detach_menu_tests.c @@ -114,14 +114,14 @@ static void ResetMocks(void) static void ResetMocksForDeveloper(void) { ResetMocks(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; shutdown_request_calls_left = -1; } static void ResetMocksForManualRecovery(void) { ResetMocks(); - shared->flags |= VBSD_BOOT_REC_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY; trust_ec = 1; } @@ -503,7 +503,7 @@ static void VbBootDevTest(void) /* Disable developer mode */ ResetMocksForDeveloper(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS; mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS; @@ -528,7 +528,7 @@ static void VbBootDevTest(void) /* Tonorm ignored if GBB forces dev switch on */ ResetMocksForDeveloper(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON; mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS; @@ -555,7 +555,7 @@ static void VbBootDevTest(void) /* Shutdown requested at tonorm screen */ ResetMocksForDeveloper(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS; shutdown_request_calls_left = 2; @@ -1343,7 +1343,7 @@ static void VbBootRecTest(void) vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE; vbtlk_retval[2] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE; - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; TEST_EQ(VbBootRecoveryMenu(ctx), VBERROR_SHUTDOWN_REQUESTED, "Shutdown requested in BROKEN with dev switch"); TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery"); @@ -1387,7 +1387,7 @@ static void VbBootRecTest(void) ResetMocksForManualRecovery(); vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE; - shared->flags &= ~VBSD_BOOT_REC_SWITCH_ON; + sd->flags &= ~VB2_SD_FLAG_MANUAL_RECOVERY; TEST_EQ(VbBootRecoveryMenu(ctx), VBERROR_SHUTDOWN_REQUESTED, "Go to BROKEN if recovery not manually requested"); TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery"); @@ -1763,7 +1763,7 @@ static void VbBootRecTest(void) /* Cannot enable dev mode if already enabled. */ ResetMocksForManualRecovery(); - shared->flags |= VBSD_BOOT_DEV_SWITCH_ON; + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE; i = 0; |