summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2020-05-17 20:33:05 +0800
committerCommit Bot <commit-bot@chromium.org>2020-05-18 16:13:11 +0000
commita2f2c015cb545a0c1060bd30c59df567b856bc17 (patch)
treed34649cbdb84bc564ce6ce73861391d9e08dee1b
parent1cb270074bbd26d83316b62de30812eff9c962b4 (diff)
downloadvboot-a2f2c015cb545a0c1060bd30c59df567b856bc17.tar.gz
vboot: make dev boot target functions consistent
vb2_get_dev_boot_target() should only return: BOOT_USB iff vb2_dev_boot_usb_allowed() BOOT_LEGACY iff vb2_dev_boot_legacy_allowed() Otherwise, fallback to BOOT_DISK. BUG=None TEST=make clean && make runtests BRANCH=none Change-Id: Ic67915d0888f640f6e7b04c91f99346412cc18ee Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2203301 Reviewed-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
-rw-r--r--firmware/2lib/2misc.c14
-rw-r--r--tests/vb2_misc_tests.c24
2 files changed, 37 insertions, 1 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c
index baa50132..b5788e30 100644
--- a/firmware/2lib/2misc.c
+++ b/firmware/2lib/2misc.c
@@ -514,7 +514,19 @@ enum vb2_dev_default_boot vb2_get_dev_boot_target(
if (gbb->flags & VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY)
return VB2_DEV_DEFAULT_BOOT_LEGACY;
- return vb2_nv_get(ctx, VB2_NV_DEV_DEFAULT_BOOT);
+ switch (vb2_nv_get(ctx, VB2_NV_DEV_DEFAULT_BOOT)) {
+ case VB2_DEV_DEFAULT_BOOT_USB:
+ if (vb2_dev_boot_usb_allowed(ctx))
+ return VB2_DEV_DEFAULT_BOOT_USB;
+ break;
+
+ case VB2_DEV_DEFAULT_BOOT_LEGACY:
+ if (vb2_dev_boot_legacy_allowed(ctx))
+ return VB2_DEV_DEFAULT_BOOT_LEGACY;
+ break;
+ }
+
+ return VB2_DEV_DEFAULT_BOOT_DISK;
}
int vb2_dev_boot_allowed(struct vb2_context *ctx)
diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c
index f5cc90c0..aabe0ee6 100644
--- a/tests/vb2_misc_tests.c
+++ b/tests/vb2_misc_tests.c
@@ -872,15 +872,39 @@ static void dev_default_boot_tests(void)
/* Boot from usb */
reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_BOOT_USB, 1);
vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_USB);
TEST_EQ(vb2_get_dev_boot_target(ctx),
VB2_DEV_DEFAULT_BOOT_USB, "set default boot usb");
+ /* Boot from usb not allowed */
+ reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_USB);
+ TEST_EQ(vb2_get_dev_boot_target(ctx),
+ VB2_DEV_DEFAULT_BOOT_DISK, "default boot usb not allowed");
+ reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
+ vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_USB);
+ TEST_EQ(vb2_get_dev_boot_target(ctx),
+ VB2_DEV_DEFAULT_BOOT_DISK, "default boot usb not allowed");
+
/* Boot legacy */
reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_LEGACY);
TEST_EQ(vb2_get_dev_boot_target(ctx),
VB2_DEV_DEFAULT_BOOT_LEGACY, "set default boot legacy");
+
+ /* Boot legacy not allowed */
+ reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_LEGACY);
+ TEST_EQ(vb2_get_dev_boot_target(ctx),
+ VB2_DEV_DEFAULT_BOOT_DISK, "default boot legacy not allowed");
+ reset_common_data();
+ vb2_nv_set(ctx, VB2_NV_DEV_BOOT_USB, 1);
+ vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_LEGACY);
+ TEST_EQ(vb2_get_dev_boot_target(ctx),
+ VB2_DEV_DEFAULT_BOOT_DISK, "default boot legacy not allowed");
}
static void dev_boot_allowed_tests(void)