diff options
author | Joel Kitching <kitching@google.com> | 2021-04-14 15:13:28 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-06-15 19:35:52 +0000 |
commit | c6cf8890532a7b78b6cb3dc534145f500444dae2 (patch) | |
tree | 4e03d65225afd988a7cdb56bb6ee36e025bd01d2 /host | |
parent | ba23df230a9efe7f6aed8faab4dda944f62f76da (diff) | |
download | vboot-c6cf8890532a7b78b6cb3dc534145f500444dae2.tar.gz |
vboot/vboot_kernel: move kernel/fw struct functions
Relocate currently-in-use kernel struct functions out
of lib20 namespace, and into:
* 2struct.c for functions required at runtime
* host_common.c for functions required by host
Relocate firmware struct functions from 2common.c
into 2struct.c
vb2_common.h may be deleted as a result.
This CL is part of a series to merge vboot1 and vboot2.0
kernel verification code; see b/181739551.
BUG=b:181739551
TEST=make clean && make runtests
BRANCH=none
Signed-off-by: Joel Kitching <kitching@google.com>
Change-Id: Ic162d9633b6112ddc4a819b3e58d313dc484f304
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2825269
Tested-by: Joel Kitching <kitching@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'host')
-rw-r--r-- | host/lib/host_common.c | 19 | ||||
-rw-r--r-- | host/lib/host_keyblock.c | 1 | ||||
-rw-r--r-- | host/lib/include/host_common.h | 14 |
3 files changed, 33 insertions, 1 deletions
diff --git a/host/lib/host_common.c b/host/lib/host_common.c index 1dc7a542..82a59542 100644 --- a/host/lib/host_common.c +++ b/host/lib/host_common.c @@ -133,3 +133,22 @@ struct vb2_kernel_preamble *vb2_create_kernel_preamble( /* Return the header */ return h; } + +void vb2_kernel_get_vmlinuz_header(const struct vb2_kernel_preamble *preamble, + uint64_t *vmlinuz_header_address, + uint32_t *vmlinuz_header_size) +{ + if (preamble->header_version_minor < 1) { + *vmlinuz_header_address = 0; + *vmlinuz_header_size = 0; + } else { + /* + * Set header and size only if the preamble header version is > + * 2.1 as they don't exist in version 2.0 (Note that we don't + * need to check header_version_major; if that's not 2 then + * vb2_verify_kernel_preamble() would have already failed. + */ + *vmlinuz_header_address = preamble->vmlinuz_header_address; + *vmlinuz_header_size = preamble->vmlinuz_header_size; + } +} diff --git a/host/lib/host_keyblock.c b/host/lib/host_keyblock.c index a7dbedef..e5634ced 100644 --- a/host/lib/host_keyblock.c +++ b/host/lib/host_keyblock.c @@ -17,7 +17,6 @@ #include "host_key21.h" #include "host_keyblock.h" #include "host_key.h" -#include "vb2_common.h" struct vb2_keyblock *vb2_create_keyblock( const struct vb2_packed_key *data_key, diff --git a/host/lib/include/host_common.h b/host/lib/include/host_common.h index 55b15d3b..a37a6c9a 100644 --- a/host/lib/include/host_common.h +++ b/host/lib/include/host_common.h @@ -64,4 +64,18 @@ struct vb2_kernel_preamble *vb2_create_kernel_preamble( uint32_t desired_size, const struct vb2_private_key *signing_key); +/** + * Retrieve the 16-bit vmlinuz header address and size from the preamble. + * + * Size 0 means there is no 16-bit vmlinuz header present. Old preamble + * versions (<2.1) return 0 for both fields. + * + * @param preamble Preamble to check + * @param vmlinuz_header_address Destination for header address + * @param vmlinuz_header_size Destination for header size + */ +void vb2_kernel_get_vmlinuz_header(const struct vb2_kernel_preamble *preamble, + uint64_t *vmlinuz_header_address, + uint32_t *vmlinuz_header_size); + #endif /* VBOOT_REFERENCE_HOST_COMMON_H_ */ |