summaryrefslogtreecommitdiff
path: root/firmware/lib20/api_kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib20/api_kernel.c')
-rw-r--r--firmware/lib20/api_kernel.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/firmware/lib20/api_kernel.c b/firmware/lib20/api_kernel.c
index ee5c41a9..dbe47e61 100644
--- a/firmware/lib20/api_kernel.c
+++ b/firmware/lib20/api_kernel.c
@@ -73,6 +73,9 @@ int vb2api_kernel_phase1(struct vb2_context *ctx)
key_data, key_size);
if (rv)
return rv;
+
+ sd->workbuf_kernel_key_offset =
+ vb2_offset_of(ctx->workbuf, key_data);
} else {
/* Kernel subkey from firmware preamble */
struct vb2_fw_preamble *pre;
@@ -91,7 +94,8 @@ int vb2api_kernel_phase1(struct vb2_context *ctx)
* data key, firmware preamble, or hash data. So move the
* kernel key from the preamble down after the shared data.
*/
- key_data = (uint8_t *)(sd + 1);
+ sd->workbuf_kernel_key_offset = vb2_wb_round_up(sizeof(*sd));
+ key_data = ctx->workbuf + sd->workbuf_kernel_key_offset;
packed_key = (struct vb2_packed_key *)key_data;
memmove(packed_key, pre_key, sizeof(*packed_key));
packed_key->key_offset = sizeof(*packed_key);
@@ -114,11 +118,9 @@ int vb2api_kernel_phase1(struct vb2_context *ctx)
* - vb2_shared_data
* - kernel key
*/
- sd->workbuf_kernel_key_offset =
- vb2_offset_of(ctx->workbuf, key_data);
sd->workbuf_kernel_key_size = key_size;
- ctx->workbuf_used = sd->workbuf_kernel_key_offset +
- sd->workbuf_kernel_key_size;
+ vb2_set_workbuf_used(ctx, sd->workbuf_kernel_key_offset +
+ sd->workbuf_kernel_key_size);
return VB2_SUCCESS;
}