From ecdca931ae0637d1a9498f64862939bd5bb99e0b Mon Sep 17 00:00:00 2001 From: Joel Kitching Date: Thu, 25 Jul 2019 18:26:18 +0800 Subject: vboot: move vb2_context inside vb2_shared_data (persistent context) Move vb2_context to live inside of vb2_shared_data, instead of in a separate memory space allocated by the caller. See design doc: http://go/vboot2-persistent-context BUG=b:124141368, chromium:994060 TEST=make clean && make runtests BRANCH=none Change-Id: If2421756572a43ba58b9da9f00e56a8f26ad3ad5 Signed-off-by: Joel Kitching Cq-Depend: chromium:1874753, chromium:1902339 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1716351 Tested-by: Joel Kitching Commit-Queue: Julius Werner Reviewed-by: Joel Kitching Reviewed-by: Julius Werner --- utility/load_kernel_test.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) (limited to 'utility') diff --git a/utility/load_kernel_test.c b/utility/load_kernel_test.c index 3e4fb90c..540d4382 100644 --- a/utility/load_kernel_test.c +++ b/utility/load_kernel_test.c @@ -22,6 +22,10 @@ #define LBA_BYTES 512 #define KERNEL_BUFFER_SIZE 0xA00000 +static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; +static struct vb2_context *ctx; +static struct vb2_shared_data *sd; + /* Global variables for stub functions */ static LoadKernelParams lkp; static FILE *image_file = NULL; @@ -225,31 +229,22 @@ int main(int argc, char* argv[]) lkp.kernel_buffer_size = KERNEL_BUFFER_SIZE; /* Set up vboot context. */ - struct vb2_context ctx; - memset(&ctx, 0, sizeof(ctx)); - /* No need to initialize ctx->nvdata[]; defaults are fine */ - /* TODO(chromium:441893): support dev-mode flag and external gpt flag */ - ctx.workbuf = malloc(VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE); - if (!ctx.workbuf) { - fprintf(stderr, "Can't allocate workbuf\n"); + if (vb2api_init(&workbuf, sizeof(workbuf), &ctx)) { + fprintf(stderr, "Can't initialize workbuf\n"); return 1; } - ctx.workbuf_size = VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE; + sd = vb2_get_sd(ctx); + sd->vbsd = shared; + + /* No need to initialize ctx->nvdata[]; defaults are fine */ + /* TODO(chromium:441893): support dev-mode flag and external gpt flag */ if (boot_flags & BOOT_FLAG_RECOVERY) - ctx.flags |= VB2_CONTEXT_RECOVERY_MODE; + ctx->flags |= VB2_CONTEXT_RECOVERY_MODE; if (boot_flags & BOOT_FLAG_DEVELOPER) - ctx.flags |= VB2_CONTEXT_DEVELOPER_MODE; - if (VB2_SUCCESS != vb2_init_context(&ctx)) { - free(ctx.workbuf); - fprintf(stderr, "Can't init context\n"); - return 1; - } - - struct vb2_shared_data *sd = vb2_get_sd(&ctx); - sd->vbsd = shared; + ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE; /* Call LoadKernel() */ - rv = LoadKernel(&ctx, &lkp); + rv = LoadKernel(ctx, &lkp); printf("LoadKernel() returned %d\n", rv); if (VB2_SUCCESS == rv) { -- cgit v1.2.1