diff options
-rw-r--r-- | firmware/2lib/include/2struct.h | 3 | ||||
-rw-r--r-- | firmware/lib/ec_sync.c | 15 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 9 | ||||
-rw-r--r-- | firmware/lib/vboot_display.c | 18 | ||||
-rw-r--r-- | firmware/lib/vboot_ui.c | 29 | ||||
-rw-r--r-- | firmware/lib/vboot_ui_menu.c | 24 | ||||
-rw-r--r-- | tests/ec_sync_tests.c | 8 | ||||
-rw-r--r-- | tests/vboot_api_devmode_tests.c | 5 | ||||
-rw-r--r-- | tests/vboot_api_kernel2_tests.c | 16 | ||||
-rw-r--r-- | tests/vboot_detach_menu_tests.c | 14 |
10 files changed, 81 insertions, 60 deletions
diff --git a/firmware/2lib/include/2struct.h b/firmware/2lib/include/2struct.h index 0d1c6ec3..9c75ba44 100644 --- a/firmware/2lib/include/2struct.h +++ b/firmware/2lib/include/2struct.h @@ -287,6 +287,9 @@ enum vb2_gbb_flag { /* Enable serial */ VB2_GBB_FLAG_ENABLE_SERIAL = (1 << 14), + + /* Disable FWMP */ + VB2_GBB_FLAG_DISABLE_FWMP = (1 << 15), }; struct vb2_gbb_header { diff --git a/firmware/lib/ec_sync.c b/firmware/lib/ec_sync.c index 35fae2de..77b5741e 100644 --- a/firmware/lib/ec_sync.c +++ b/firmware/lib/ec_sync.c @@ -348,12 +348,12 @@ VbError_t ec_sync_phase1(struct vb2_context *ctx, VbCommonParams *cparams) /* Reasons not to do sync at all */ if (!(shared->flags & VBSD_EC_SOFTWARE_SYNC)) return VBERROR_SUCCESS; - if (cparams->gbb->flags & GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC) + if (sd->gbb_flags & VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC) return VBERROR_SUCCESS; #ifdef PD_SYNC - const int do_pd_sync = !(cparams->gbb->flags & - GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC); + const int do_pd_sync = !(sd->gbb_flags & + VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC); #else const int do_pd_sync = 0; #endif @@ -425,7 +425,7 @@ static int ec_sync_allowed(struct vb2_context *ctx, VbCommonParams *cparams) /* Reasons not to do sync at all */ if (!(shared->flags & VBSD_EC_SOFTWARE_SYNC)) return 0; - if (cparams->gbb->flags & GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC) + if (sd->gbb_flags & VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC) return 0; if (sd->recovery_reason) return 0; @@ -436,9 +436,11 @@ VbError_t ec_sync_check_aux_fw(struct vb2_context *ctx, VbCommonParams *cparams, VbAuxFwUpdateSeverity_t *severity) { + struct vb2_shared_data *sd = vb2_get_sd(ctx); + /* If we're not updating the EC, skip aux fw syncs as well */ if (!ec_sync_allowed(ctx, cparams) || - (cparams->gbb->flags & GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { + (sd->gbb_flags & VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { *severity = VB_AUX_FW_NO_UPDATE; return VBERROR_SUCCESS; } @@ -457,7 +459,8 @@ VbError_t ec_sync_phase2(struct vb2_context *ctx, VbCommonParams *cparams) #ifdef PD_SYNC /* Handle updates and jumps for PD */ - if (!(cparams->gbb->flags & GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { + struct vb2_shared_data *sd = vb2_get_sd(ctx); + if (!(sd->gbb_flags & VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { retval = sync_one_ec(ctx, 1, cparams); if (retval != VBERROR_SUCCESS) return retval; diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 26d32d55..fd0556b5 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -329,6 +329,7 @@ static VbError_t vb2_kernel_setup(VbCommonParams *cparams, uint32_t retval = VbGbbReadHeader_static(cparams, cparams->gbb); if (retval) return retval; + sd->gbb_flags = cparams->gbb->flags; /* Read kernel version from the TPM. Ignore errors in recovery mode. */ if (RollbackKernelRead(&shared->kernel_version_tpm)) { @@ -343,7 +344,7 @@ static VbError_t vb2_kernel_setup(VbCommonParams *cparams, shared->kernel_version_tpm_start = shared->kernel_version_tpm; /* Read FWMP. Ignore errors in recovery mode. */ - if (cparams->gbb->flags & GBB_FLAG_DISABLE_FWMP) { + if (sd->gbb_flags & VB2_GBB_FLAG_DISABLE_FWMP) { memset(&fwmp, 0, sizeof(fwmp)); } else if (RollbackFwmpRead(&fwmp)) { VB2_DEBUG("Unable to get FWMP from TPM\n"); @@ -480,6 +481,8 @@ VbError_t VbVerifyMemoryBootImage(VbCommonParams *cparams, if (retval) goto fail; + struct vb2_shared_data *sd = vb2_get_sd(&ctx); + if ((boot_image == NULL) || (image_size == 0)) { retval = VBERROR_INVALID_PARAMETER; goto fail; @@ -500,8 +503,8 @@ VbError_t VbVerifyMemoryBootImage(VbCommonParams *cparams, vb2_nv_get(&ctx, VB2_NV_DEV_BOOT_FASTBOOT_FULL_CAP); if (0 == allow_fastboot_full_cap) { - allow_fastboot_full_cap = !!(cparams->gbb->flags & - GBB_FLAG_FORCE_DEV_BOOT_FASTBOOT_FULL_CAP); + allow_fastboot_full_cap = !!(sd->gbb_flags & + VB2_GBB_FLAG_FORCE_DEV_BOOT_FASTBOOT_FULL_CAP); } if (dev_switch && allow_fastboot_full_cap) { diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c index 7bf341e1..ac6d7131 100644 --- a/firmware/lib/vboot_display.c +++ b/firmware/lib/vboot_display.c @@ -9,6 +9,7 @@ #include "2sysincludes.h" #include "2common.h" +#include "2misc.h" #include "2nvstorage.h" #include "2sha.h" #include "bmpblk_font.h" @@ -600,7 +601,7 @@ VbError_t VbDisplayDebugInfo(struct vb2_context *ctx, VbCommonParams *cparams) { VbSharedDataHeader *shared = (VbSharedDataHeader *)cparams->shared_data_blob; - GoogleBinaryBlockHeader *gbb = cparams->gbb; + struct vb2_shared_data *sd = vb2_get_sd(ctx); char buf[DEBUG_INFO_SIZE] = ""; char sha1sum[VB2_SHA1_DIGEST_SIZE * 2 + 1]; char hwid[256]; @@ -679,7 +680,8 @@ VbError_t VbDisplayDebugInfo(struct vb2_context *ctx, VbCommonParams *cparams) used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, i, 10, 0); /* Add TPM versions */ - used += StrnAppend(buf + used, "\nTPM: fwver=0x", DEBUG_INFO_SIZE - used); + used += StrnAppend(buf + used, + "\nTPM: fwver=0x", DEBUG_INFO_SIZE - used); used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, shared->fw_version_tpm, 16, 8); used += StrnAppend(buf + used, " kernver=0x", DEBUG_INFO_SIZE - used); @@ -687,14 +689,10 @@ VbError_t VbDisplayDebugInfo(struct vb2_context *ctx, VbCommonParams *cparams) shared->kernel_version_tpm, 16, 8); /* Add GBB flags */ - used += StrnAppend(buf + used, "\ngbb.flags: 0x", DEBUG_INFO_SIZE - used); - if (gbb->major_version == GBB_MAJOR_VER && gbb->minor_version >= 1) { - used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, - gbb->flags, 16, 8); - } else { - used += StrnAppend(buf + used, - "0 (default)", DEBUG_INFO_SIZE - used); - } + used += StrnAppend(buf + used, + "\ngbb.flags: 0x", DEBUG_INFO_SIZE - used); + used += Uint64ToString(buf + used, DEBUG_INFO_SIZE - used, + sd->gbb_flags, 16, 8); /* Add sha1sum for Root & Recovery keys */ ret = VbGbbReadRootKey(cparams, &key); diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c index 4d913f0e..50c27e76 100644 --- a/firmware/lib/vboot_ui.c +++ b/firmware/lib/vboot_ui.c @@ -38,15 +38,16 @@ static void VbAllowUsbBoot(struct vb2_context *ctx) * * Returns true if a shutdown is required and false if no shutdown is required. */ -static int VbWantShutdown(uint32_t gbb_flags, uint32_t key) +static int VbWantShutdown(struct vb2_context *ctx, uint32_t key) { + struct vb2_shared_data *sd = vb2_get_sd(ctx); uint32_t shutdown_request = VbExIsShutdownRequested(); if (key == VB_BUTTON_POWER_SHORT_PRESS) shutdown_request |= VB_SHUTDOWN_REQUEST_POWER_BUTTON; /* If desired, ignore shutdown request due to lid closure. */ - if (gbb_flags & GBB_FLAG_DISABLE_LID_SHUTDOWN) + if (sd->gbb_flags & GBB_FLAG_DISABLE_LID_SHUTDOWN) shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED; return !!shutdown_request; @@ -105,7 +106,7 @@ int VbUserConfirms(struct vb2_context *ctx, VbCommonParams *cparams, /* Await further instructions */ while (1) { key = VbExKeyboardReadWithFlags(&key_flags); - if (VbWantShutdown(cparams->gbb->flags, key)) + if (VbWantShutdown(ctx, key)) return -1; switch (key) { case '\r': @@ -161,9 +162,9 @@ static const char dev_disable_msg[] = VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) { - GoogleBinaryBlockHeader *gbb = cparams->gbb; VbSharedDataHeader *shared = (VbSharedDataHeader *)cparams->shared_data_blob; + struct vb2_shared_data *sd = vb2_get_sd(ctx); uint32_t disable_dev_boot = 0; uint32_t use_usb = 0; @@ -187,11 +188,11 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) use_legacy = 1; /* Handle GBB flag override */ - if (gbb->flags & GBB_FLAG_FORCE_DEV_BOOT_USB) + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_USB) allow_usb = 1; - if (gbb->flags & GBB_FLAG_FORCE_DEV_BOOT_LEGACY) + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY) allow_legacy = 1; - if (gbb->flags & GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY) { + if (sd->gbb_flags & VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY) { use_legacy = 1; use_usb = 0; } @@ -203,7 +204,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) if (fwmp_flags & FWMP_DEV_ENABLE_LEGACY) allow_legacy = 1; if (fwmp_flags & FWMP_DEV_DISABLE_BOOT) { - if (gbb->flags & GBB_FLAG_FORCE_DEV_SWITCH_ON) { + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { VB2_DEBUG("FWMP_DEV_DISABLE_BOOT rejected by " "FORCE_DEV_SWITCH_ON\n"); } else { @@ -245,7 +246,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) /* We'll loop until we finish the delay or are interrupted */ do { uint32_t key = VbExKeyboardRead(); - if (VbWantShutdown(gbb->flags, key)) { + if (VbWantShutdown(ctx, key)) { VB2_DEBUG("VbBootDeveloper() - shutdown requested!\n"); VbAudioClose(audio); return VBERROR_SHUTDOWN_REQUESTED; @@ -257,7 +258,8 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) break; case '\r': /* Only disable virtual dev switch if allowed by GBB */ - if (!(gbb->flags & GBB_FLAG_ENTER_TRIGGERS_TONORM)) + if (!(sd->gbb_flags & + VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM)) break; case ' ': /* See if we should disable virtual dev-mode switch. */ @@ -266,7 +268,8 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams) shared->flags & VBSD_BOOT_DEV_SWITCH_ON) { /* Stop the countdown while we go ask... */ VbAudioClose(audio); - if (gbb->flags & GBB_FLAG_FORCE_DEV_SWITCH_ON) { + if (sd->gbb_flags & + GBB_FLAG_FORCE_DEV_SWITCH_ON) { /* * TONORM won't work (only for * non-shipping devices). @@ -446,7 +449,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) while (1) { key = VbExKeyboardRead(); VbCheckDisplayKey(ctx, cparams, key); - if (VbWantShutdown(cparams->gbb->flags, key)) + if (VbWantShutdown(ctx, key)) return VBERROR_SHUTDOWN_REQUESTED; VbExSleepMs(REC_KEY_DELAY); } @@ -543,7 +546,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) } else { VbCheckDisplayKey(ctx, cparams, key); } - if (VbWantShutdown(cparams->gbb->flags, key)) + if (VbWantShutdown(ctx, key)) return VBERROR_SHUTDOWN_REQUESTED; VbExSleepMs(REC_KEY_DELAY); } diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c index fd47b551..ce0496d6 100644 --- a/firmware/lib/vboot_ui_menu.c +++ b/firmware/lib/vboot_ui_menu.c @@ -36,12 +36,13 @@ static void VbAllowUsbBootMenu(struct vb2_context *ctx) * * Returns true if a shutdown is required and false if no shutdown is required. */ -static int VbWantShutdownMenu(uint32_t gbb_flags) +static int VbWantShutdownMenu(struct vb2_context *ctx) { + struct vb2_shared_data *sd = vb2_get_sd(ctx); uint32_t shutdown_request = VbExIsShutdownRequested(); /* If desired, ignore shutdown request due to lid closure. */ - if (gbb_flags & GBB_FLAG_DISABLE_LID_SHUTDOWN) + if (sd->gbb_flags & VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN) shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED; /* @@ -589,9 +590,9 @@ void vb2_update_selection(VbCommonParams *cparams, uint32_t key) { */ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) { - GoogleBinaryBlockHeader *gbb = cparams->gbb; VbSharedDataHeader *shared = (VbSharedDataHeader *)cparams->shared_data_blob; + struct vb2_shared_data *sd = vb2_get_sd(ctx); uint32_t use_usb = 0; uint32_t use_legacy = 0; @@ -615,11 +616,11 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) use_legacy = 1; /* Handle GBB flag override */ - if (gbb->flags & GBB_FLAG_FORCE_DEV_BOOT_USB) + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_USB) allow_usb = 1; - if (gbb->flags & GBB_FLAG_FORCE_DEV_BOOT_LEGACY) + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY) allow_legacy = 1; - if (gbb->flags & GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY) { + if (sd->gbb_flags & VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY) { use_legacy = 1; use_usb = 0; } @@ -631,7 +632,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) if (fwmp_flags & FWMP_DEV_ENABLE_LEGACY) allow_legacy = 1; if (fwmp_flags & FWMP_DEV_DISABLE_BOOT) { - if (gbb->flags & GBB_FLAG_FORCE_DEV_SWITCH_ON) { + if (sd->gbb_flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { VB2_DEBUG("FWMP_DEV_DISABLE_BOOT rejected by" "FORCE_DEV_SWITCH_ON\n"); } else { @@ -657,7 +658,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) do { uint32_t key; - if (VbWantShutdownMenu(gbb->flags)) { + if (VbWantShutdownMenu(ctx)) { VB2_DEBUG("shutdown requested!\n"); if (audio) VbAudioClose(audio); @@ -825,7 +826,8 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) /* Enabling verified boot */ if (current_menu == VB_MENU_TO_NORM && current_menu_idx == VB_TO_NORM_CONFIRM) { - if (gbb->flags & GBB_FLAG_FORCE_DEV_SWITCH_ON) { + if (sd->gbb_flags & + VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { /* * Throw error when user tries to * confirm transition to normal @@ -948,7 +950,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) return VBERROR_SHUTDOWN_REQUESTED; else { VbCheckDisplayKey(ctx, cparams, key); - if (VbWantShutdownMenu(cparams->gbb->flags)) + if (VbWantShutdownMenu(ctx)) return VBERROR_SHUTDOWN_REQUESTED; } VbExSleepMs(REC_KEY_DELAY); @@ -1137,7 +1139,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) return VBERROR_REBOOT_REQUIRED; } } - if (VbWantShutdownMenu(cparams->gbb->flags)) + if (VbWantShutdownMenu(ctx)) return VBERROR_SHUTDOWN_REQUESTED; VbExSleepMs(REC_KEY_DELAY); } diff --git a/tests/ec_sync_tests.c b/tests/ec_sync_tests.c index a8c9b78c..8f09af0d 100644 --- a/tests/ec_sync_tests.c +++ b/tests/ec_sync_tests.c @@ -409,19 +409,19 @@ static void VbSoftwareSyncTest(void) test_ssync(0, 0, "AP-RW shutdown requested"); ResetMocks(); - cparams.gbb->flags |= GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC; + sd->gbb_flags |= VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC; ec_aux_fw_mock_severity = VB_AUX_FW_FAST_UPDATE; test_ssync(VBERROR_SUCCESS, 0, - "GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC" + "VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC" " disables auxiliary FW update request"); TEST_EQ(ec_aux_fw_update_req, 0, " aux fw update disabled"); TEST_EQ(ec_aux_fw_protected, 1, " aux fw protected"); ResetMocks(); - cparams.gbb->flags |= GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC; + sd->gbb_flags |= VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC; ec_aux_fw_mock_severity = VB_AUX_FW_FAST_UPDATE; test_ssync(VBERROR_SUCCESS, 0, - "GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC" + "VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC" " disables auxiliary FW update request"); TEST_EQ(ec_aux_fw_update_req, 0, " aux fw update disabled"); TEST_EQ(ec_aux_fw_protected, 1, " aux fw protected"); diff --git a/tests/vboot_api_devmode_tests.c b/tests/vboot_api_devmode_tests.c index a65fc269..5b495163 100644 --- a/tests/vboot_api_devmode_tests.c +++ b/tests/vboot_api_devmode_tests.c @@ -12,6 +12,7 @@ #include "2sysincludes.h" #include "2api.h" +#include "2misc.h" #include "2nvstorage.h" #include "crc32.h" #include "gbb_header.h" @@ -134,6 +135,7 @@ test_case_t test[] = { /* Mock data */ static VbCommonParams cparams; +static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; static struct vb2_context ctx; static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE]; static VbSharedDataHeader* shared = (VbSharedDataHeader*)shared_data; @@ -160,6 +162,9 @@ static void ResetMocks(void) { cparams.gbb = &gbb; memset(&ctx, 0, sizeof(ctx)); + ctx.workbuf = workbuf; + ctx.workbuf_size = sizeof(workbuf); + vb2_init_context(&ctx); vb2_nv_init(&ctx); memset(&shared_data, 0, sizeof(shared_data)); diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c index da0af9b5..f03a8dcd 100644 --- a/tests/vboot_api_kernel2_tests.c +++ b/tests/vboot_api_kernel2_tests.c @@ -32,6 +32,7 @@ static GoogleBinaryBlockHeader gbb; static LoadKernelParams lkp; static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; static struct vb2_context ctx; +static struct vb2_shared_data *sd; static int shutdown_request_calls_left; static int audio_looping_calls_left; @@ -80,6 +81,7 @@ static void ResetMocks(void) ctx.workbuf_size = sizeof(workbuf); vb2_init_context(&ctx); vb2_nv_init(&ctx); + sd = vb2_get_sd(&ctx); shutdown_request_calls_left = -1; audio_looping_calls_left = 30; @@ -297,8 +299,8 @@ static void VbBootDevTest(void) /* Proceed to legacy after timeout if GBB flag set */ ResetMocks(); - gbb.flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY | - GBB_FLAG_FORCE_DEV_BOOT_LEGACY; + sd->gbb_flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY | + VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY; TEST_EQ(VbBootDeveloper(&ctx, &cparams), 1002, "Timeout"); TEST_EQ(vbexlegacy_called, 1, " try legacy"); @@ -410,7 +412,7 @@ static void VbBootDevTest(void) /* Enter does if GBB flag set */ ResetMocks(); shared->flags = VBSD_HONOR_VIRT_DEV_SWITCH | VBSD_BOOT_DEV_SWITCH_ON; - gbb.flags |= GBB_FLAG_ENTER_TRIGGERS_TONORM; + sd->gbb_flags |= VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM; mock_keypress[0] = '\r'; mock_keypress[1] = '\r'; TEST_EQ(VbBootDeveloper(&ctx, &cparams), VBERROR_REBOOT_REQUIRED, @@ -419,7 +421,7 @@ static void VbBootDevTest(void) /* Tonorm ignored if GBB forces dev switch on */ ResetMocks(); shared->flags = VBSD_HONOR_VIRT_DEV_SWITCH | VBSD_BOOT_DEV_SWITCH_ON; - gbb.flags |= GBB_FLAG_FORCE_DEV_SWITCH_ON; + sd->gbb_flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON; mock_keypress[0] = ' '; mock_keypress[1] = '\r'; TEST_EQ(VbBootDeveloper(&ctx, &cparams), 1002, @@ -458,7 +460,7 @@ static void VbBootDevTest(void) /* Ctrl+D doesn't boot legacy even if GBB flag is set */ ResetMocks(); mock_keypress[0] = 0x04; - gbb.flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY; + sd->gbb_flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY; TEST_EQ(VbBootDeveloper(&ctx, &cparams), 1002, "Ctrl+D"); TEST_EQ(vbexlegacy_called, 0, " not legacy"); @@ -469,7 +471,7 @@ static void VbBootDevTest(void) TEST_EQ(vbexlegacy_called, 0, " not legacy"); ResetMocks(); - gbb.flags |= GBB_FLAG_FORCE_DEV_BOOT_LEGACY; + sd->gbb_flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY; mock_keypress[0] = 0x0c; TEST_EQ(VbBootDeveloper(&ctx, &cparams), 1002, "Ctrl+L force legacy"); @@ -503,7 +505,7 @@ static void VbBootDevTest(void) /* Ctrl+U enabled via GBB */ ResetMocks(); - gbb.flags |= GBB_FLAG_FORCE_DEV_BOOT_USB; + sd->gbb_flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_USB; mock_keypress[0] = 0x15; vbtlk_retval = VBERROR_SUCCESS - VB_DISK_FLAG_REMOVABLE; TEST_EQ(VbBootDeveloper(&ctx, &cparams), 0, "Ctrl+U force USB"); diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c index 93f13f1d..f0aa4255 100644 --- a/tests/vboot_detach_menu_tests.c +++ b/tests/vboot_detach_menu_tests.c @@ -34,6 +34,7 @@ static GoogleBinaryBlockHeader gbb; static LoadKernelParams lkp; static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; static struct vb2_context ctx; +static struct vb2_shared_data *sd; static int shutdown_request_calls_left; static int audio_looping_calls_left; @@ -82,6 +83,7 @@ static void ResetMocks(void) ctx.workbuf_size = sizeof(workbuf); vb2_init_context(&ctx); vb2_nv_init(&ctx); + sd = vb2_get_sd(&ctx); shutdown_request_calls_left = -1; audio_looping_calls_left = 30; @@ -253,7 +255,7 @@ static void VbBootDevTest(void) /* Proceed to legacy after timeout if GBB flag set */ ResetMocks(); - gbb.flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY | + sd->gbb_flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY | GBB_FLAG_FORCE_DEV_BOOT_LEGACY; TEST_EQ(VbBootDeveloperMenu(&ctx, &cparams), 1002, "Timeout"); TEST_EQ(vbexlegacy_called, 1, " try legacy"); @@ -373,7 +375,7 @@ static void VbBootDevTest(void) /* Enter does if GBB flag set */ ResetMocks(); shared->flags = VBSD_HONOR_VIRT_DEV_SWITCH | VBSD_BOOT_DEV_SWITCH_ON; - gbb.flags |= GBB_FLAG_ENTER_TRIGGERS_TONORM; + sd->gbb_flags |= GBB_FLAG_ENTER_TRIGGERS_TONORM; mock_keypress[0] = '\r'; mock_keypress[1] = '\r'; TEST_EQ(VbBootDeveloperMenu(&ctx, &cparams), VBERROR_REBOOT_REQUIRED, @@ -383,7 +385,7 @@ static void VbBootDevTest(void) /* Tonorm ignored if GBB forces dev switch on */ ResetMocks(); shared->flags = VBSD_HONOR_VIRT_DEV_SWITCH | VBSD_BOOT_DEV_SWITCH_ON; - gbb.flags |= GBB_FLAG_FORCE_DEV_SWITCH_ON; + sd->gbb_flags |= GBB_FLAG_FORCE_DEV_SWITCH_ON; mock_keypress[0] = 0x62; // volume up mock_keypress[1] = 0x90; // power mock_keypress[2] = 0x90; // power @@ -426,7 +428,7 @@ static void VbBootDevTest(void) /* Ctrl+D doesn't boot legacy even if GBB flag is set */ ResetMocks(); mock_keypress[0] = 0x04; - gbb.flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY; + sd->gbb_flags |= GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY; TEST_EQ(VbBootDeveloperMenu(&ctx, &cparams), 1002, "Ctrl+D"); TEST_EQ(vbexlegacy_called, 0, " not legacy"); @@ -438,7 +440,7 @@ static void VbBootDevTest(void) #if 0 ResetMocks(); - gbb.flags |= GBB_FLAG_FORCE_DEV_BOOT_LEGACY; + sd->gbb_flags |= GBB_FLAG_FORCE_DEV_BOOT_LEGACY; mock_keypress[0] = 0x0c; TEST_EQ(VbBootDeveloperMenu(&ctx, &cparams), 1002, "Ctrl+L force legacy"); @@ -473,7 +475,7 @@ static void VbBootDevTest(void) /* Ctrl+U enabled via GBB */ ResetMocks(); - gbb.flags |= GBB_FLAG_FORCE_DEV_BOOT_USB; + sd->gbb_flags |= GBB_FLAG_FORCE_DEV_BOOT_USB; mock_keypress[0] = 0x15; vbtlk_retval = VBERROR_SUCCESS - VB_DISK_FLAG_REMOVABLE; TEST_EQ(VbBootDeveloperMenu(&ctx, &cparams), 0, "Ctrl+U force USB"); |