summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2019-08-22 16:32:05 +0800
committerCommit Bot <commit-bot@chromium.org>2019-08-28 07:32:06 +0000
commitd0dae8029bc6c6805c56e384038cf8112e8766d6 (patch)
treec49bdfef1f08ca297adc649838527cbe8ea4874e
parentab0d526e162ba7478080eab11200f00fe7565338 (diff)
downloadvboot-d0dae8029bc6c6805c56e384038cf8112e8766d6.tar.gz
vboot/secdata: remove DISABLE_ROLLBACK_TPM constant
This constant triggered different implementations of the two functions RollbackFwmpRead and RollbackKernelLock, whose overridden implementation would then be relied on in various tests. Instead, directly override these functions within the tests where they are required. The overridden implementations were also used in utilities/load_kernel_test.c, but this utility is currently broken and not in active use. If we would like to get it working again, simply override these two functions directly in the C file, just as is done for unit tests. (See b:139839429.) BUG=b:124141368, chromium:972956 TEST=make clean && make runtests BRANCH=none Change-Id: I0a4d24ea4ae4182b7f4f258860de6f712dae1555 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1765169 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
-rw-r--r--Makefile6
-rw-r--r--firmware/lib/include/rollback_index.h5
-rw-r--r--firmware/lib/rollback_index.c48
-rw-r--r--tests/rollback_index2_tests.c6
-rw-r--r--tests/vboot_api_kernel2_tests.c5
-rw-r--r--tests/vboot_api_kernel5_tests.c31
-rw-r--r--tests/vboot_detach_menu_tests.c5
7 files changed, 46 insertions, 60 deletions
diff --git a/Makefile b/Makefile
index d1557f81..2fd8538e 100644
--- a/Makefile
+++ b/Makefile
@@ -867,12 +867,6 @@ ${FWLIB21_OBJS}: CFLAGS += -DUNROLL_LOOPS
${FWLIB_OBJS}: CFLAGS += -DSAVE_LOCALE_IMMEDIATELY
endif
-ifeq (${FIRMWARE_ARCH},)
-# Disable rollback TPM when compiling locally, since otherwise
-# load_kernel_test attempts to talk to the TPM.
-${FWLIB_OBJS}: CFLAGS += -DDISABLE_ROLLBACK_TPM
-endif
-
${FWLIB21_OBJS}: INCLUDES += -Ifirmware/lib21/include
# Linktest ensures firmware lib doesn't rely on outside libraries
diff --git a/firmware/lib/include/rollback_index.h b/firmware/lib/include/rollback_index.h
index 9d6cfcc3..4836063e 100644
--- a/firmware/lib/include/rollback_index.h
+++ b/firmware/lib/include/rollback_index.h
@@ -118,6 +118,11 @@ enum fwmp_flags {
* global variables.
*/
+uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf);
+uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf);
+uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk);
+uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk);
+
/**
* Read stored kernel version.
*/
diff --git a/firmware/lib/rollback_index.c b/firmware/lib/rollback_index.c
index c04a282d..e4493a4a 100644
--- a/firmware/lib/rollback_index.c
+++ b/firmware/lib/rollback_index.c
@@ -18,25 +18,6 @@
#define offsetof(A,B) __builtin_offsetof(A,B)
#endif
-/*
- * Provide protoypes for functions not in the header file. These prototypes
- * fix -Wmissing-prototypes warnings.
- */
-uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf);
-uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf);
-uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk);
-uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk);
-
-#ifdef FOR_TEST
-/*
- * Compiling for unit test, so we need the real implementations of
- * rollback functions. The unit test mocks the underlying tlcl
- * functions, so this is okay to run on the host.
- */
-#undef CHROMEOS_ENVIRONMENT
-#undef DISABLE_ROLLBACK_TPM
-#endif
-
#define RETURN_ON_FAILURE(tpm_command) do { \
uint32_t result_; \
if ((result_ = (tpm_command)) != TPM_SUCCESS) { \
@@ -200,33 +181,6 @@ uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk)
return TPM_SUCCESS;
}
-#ifdef DISABLE_ROLLBACK_TPM
-/* Dummy implementations which don't support TPM rollback protection */
-
-uint32_t RollbackKernelRead(uint32_t* version)
-{
- *version = 0;
- return TPM_SUCCESS;
-}
-
-uint32_t RollbackKernelWrite(uint32_t version)
-{
- return TPM_SUCCESS;
-}
-
-uint32_t RollbackKernelLock(int recovery_mode)
-{
- return TPM_SUCCESS;
-}
-
-uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp)
-{
- memset(fwmp, 0, sizeof(*fwmp));
- return TPM_SUCCESS;
-}
-
-#else
-
uint32_t RollbackKernelRead(uint32_t* version)
{
RollbackSpaceKernel rsk;
@@ -338,5 +292,3 @@ uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp)
memcpy(fwmp, &u.fwmp, sizeof(*fwmp));
return TPM_SUCCESS;
}
-
-#endif /* DISABLE_ROLLBACK_TPM */
diff --git a/tests/rollback_index2_tests.c b/tests/rollback_index2_tests.c
index 9df8b06d..b8ebc80e 100644
--- a/tests/rollback_index2_tests.c
+++ b/tests/rollback_index2_tests.c
@@ -254,9 +254,6 @@ uint32_t TlclGetPermissions(uint32_t index, uint32_t* permissions)
/****************************************************************************/
/* Tests for CRC errors */
-extern uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsf);
-extern uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsf);
-
static void FirmwareSpaceTest(void)
{
RollbackSpaceFirmware rsf;
@@ -290,9 +287,6 @@ static void FirmwareSpaceTest(void)
"tlcl calls");
}
-extern uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk);
-extern uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk);
-
static void KernelSpaceTest(void)
{
RollbackSpaceKernel rsk;
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index 49a4233a..1791dc71 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -127,6 +127,11 @@ static void ResetMocks(void)
}
/* Mock functions */
+uint32_t RollbackKernelLock(int recovery_mode)
+{
+ return TPM_SUCCESS;
+}
+
struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
{
return &gbb;
diff --git a/tests/vboot_api_kernel5_tests.c b/tests/vboot_api_kernel5_tests.c
index bd584395..f07fc2d9 100644
--- a/tests/vboot_api_kernel5_tests.c
+++ b/tests/vboot_api_kernel5_tests.c
@@ -19,6 +19,7 @@
#include "2struct.h"
#include "host_common.h"
#include "load_kernel_fw.h"
+#include "rollback_index.h"
#include "test_common.h"
#include "vb2_common.h"
#include "vboot_api.h"
@@ -115,6 +116,36 @@ struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
return &gbb;
}
+uint32_t ReadSpaceFirmware(RollbackSpaceFirmware *rsk)
+{
+ return VB2_SUCCESS;
+}
+
+uint32_t WriteSpaceFirmware(RollbackSpaceFirmware *rsk)
+{
+ return VB2_SUCCESS;
+}
+
+uint32_t ReadSpaceKernel(RollbackSpaceKernel *rsk)
+{
+ return VB2_SUCCESS;
+}
+
+uint32_t WriteSpaceKernel(RollbackSpaceKernel *rsk)
+{
+ return VB2_SUCCESS;
+}
+
+uint32_t RollbackKernelLock(int recovery_mode)
+{
+ return TPM_SUCCESS;
+}
+
+uint32_t RollbackFwmpRead(struct RollbackSpaceFwmp *fwmp)
+{
+ return TPM_SUCCESS;
+}
+
vb2_error_t vb2ex_read_resource(struct vb2_context *c,
enum vb2_resource_index index, uint32_t offset,
void *buf, uint32_t size)
diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c
index 1a0c6175..14e0aa30 100644
--- a/tests/vboot_detach_menu_tests.c
+++ b/tests/vboot_detach_menu_tests.c
@@ -129,6 +129,11 @@ static void ResetMocksForManualRecovery(void)
}
/* Mock functions */
+uint32_t RollbackKernelLock(int recovery_mode)
+{
+ return TPM_SUCCESS;
+}
+
struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
{
return &gbb;