summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-Ping Wu <yupingso@chromium.org>2019-11-14 11:38:44 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-11-20 13:25:05 +0000
commitea544574d06e8a149c447b35c5e8fba96e61152a (patch)
treea9f9d50f0ab3e9e82576ec70e44001a90c172ce9
parenta0e1e596f894416c9db9eefe5b742cb4fad23a00 (diff)
security/vboot: Remove buffer_size from struct vboot_working_data
Since buffer_size is no longer used, remove it from struct vboot_working_data. BRANCH=none BUG=chromium:1021452 TEST=emerge-kukui coreboot Change-Id: Ie770e89b4a45e0ec703d5bbb8fb6a298ce915056 Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36844 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--src/lib/coreboot_table.c9
-rw-r--r--src/security/vboot/common.c14
-rw-r--r--src/security/vboot/misc.h1
3 files changed, 11 insertions, 13 deletions
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index d3576e6a32..241d8e1550 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -227,7 +227,14 @@ static void lb_vboot_workbuf(struct lb_header *header)
vbwb->tag = LB_TAG_VBOOT_WORKBUF;
vbwb->size = sizeof(*vbwb);
vbwb->range_start = (uintptr_t)wd + wd->buffer_offset;
- vbwb->range_size = wd->buffer_size;
+ /*
+ * TODO(chromium:1021452): Since cbmem size of vboot workbuf is now
+ * always a known value, we hardcode the value of range_size here.
+ * Ultimately we'll want to move this to add_cbmem_pointers() below,
+ * but we'll have to get rid of the vboot_working_data struct first.
+ */
+ vbwb->range_size = VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE -
+ wd->buffer_offset;
}
__weak uint32_t board_id(void) { return UNDEFINED_STRAPPING_ID; }
diff --git a/src/security/vboot/common.c b/src/security/vboot/common.c
index 043748cbef..3f57602cb1 100644
--- a/src/security/vboot/common.c
+++ b/src/security/vboot/common.c
@@ -73,11 +73,11 @@ struct vb2_context *vboot_get_context(void)
*/
memset(wd, 0, sizeof(*wd));
wd->buffer_offset = ALIGN_UP(sizeof(*wd), 16);
- wd->buffer_size = VB2_FIRMWARE_WORKBUF_RECOMMENDED_SIZE
- - wd->buffer_offset;
/* Initialize vb2_shared_data and friends. */
- assert(vb2api_init(vboot_get_workbuf(wd), wd->buffer_size,
+ assert(vb2api_init(vboot_get_workbuf(wd),
+ VB2_FIRMWARE_WORKBUF_RECOMMENDED_SIZE -
+ wd->buffer_offset,
vboot_ctx_ptr) == VB2_SUCCESS);
return *vboot_ctx_ptr;
@@ -137,14 +137,6 @@ static void vboot_migrate_cbmem(int unused)
cbmem_add(CBMEM_ID_VBOOT_WORKBUF, cbmem_size);
assert(wd_cbmem != NULL);
memcpy(wd_cbmem, wd_preram, sizeof(struct vboot_working_data));
- /*
- * TODO(chromium:1021452): buffer_size is uint16_t and not large enough
- * to hold the kernel verification workbuf size. The only code which
- * reads this value is in lb_vboot_workbuf() for lb_range->range_size.
- * This value being zero doesn't cause any problems, since it is never
- * read downstream. Fix or deprecate vboot_working_data.
- */
- wd_cbmem->buffer_size = 0;
vb2api_relocate(vboot_get_workbuf(wd_cbmem),
vboot_get_workbuf(wd_preram),
cbmem_size - wd_cbmem->buffer_offset,
diff --git a/src/security/vboot/misc.h b/src/security/vboot/misc.h
index 812bbe7267..e438848635 100644
--- a/src/security/vboot/misc.h
+++ b/src/security/vboot/misc.h
@@ -39,7 +39,6 @@ struct vboot_working_data {
struct selected_region selected_region;
/* offset of the buffer from the start of this struct */
uint16_t buffer_offset;
- uint16_t buffer_size;
};
/*