diff options
author | Furquan Shaikh <furquan@google.com> | 2015-02-03 15:34:29 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-12 04:40:35 +0000 |
commit | 80e779d50b52cd97c9d5896a3b75fa8118ee488f (patch) | |
tree | 18417a40d0f494546b6cc8b35cbd47938451facc /futility/cmd_sign.c | |
parent | 623d6c4744ed92b53ac929edd94de22c61a93daf (diff) | |
download | vboot-80e779d50b52cd97c9d5896a3b75fa8118ee488f.tar.gz |
kernel flags: Add flags field to kernel preamble.
1. Increase kernel preamble revision from 2.1 to 2.2.
2. Add flags field to kernel preamble.
3. Update futility to accept flags parameter for vbutil_kernel and
cmd_sign for kernel.
4. Pass in an extra flags field to SignKernelBlob and
CreateKernelPreamble.
BUG=chrome-os-partner:35861
BRANCH=None
TEST=1) "make runalltests" completes successfully. 2) vboot_reference
compiles successfully for ryu. 3) Verified flags field in header using
futility show.
Change-Id: If9f06f98778a7339194c77090cbef4807d5e34e2
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://chromium-review.googlesource.com/245950
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Diffstat (limited to 'futility/cmd_sign.c')
-rw-r--r-- | futility/cmd_sign.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/futility/cmd_sign.c b/futility/cmd_sign.c index a960abd6..2d247bcd 100644 --- a/futility/cmd_sign.c +++ b/futility/cmd_sign.c @@ -219,7 +219,7 @@ int futil_cb_create_kernel_part(struct futil_traverse_state_s *state) vblock_data = SignKernelBlob(kblob_data, kblob_size, option.padding, option.version, option.kloadaddr, option.keyblock, option.signprivate, - &vblock_size); + option.flags, &vblock_size); if (!vblock_data) { fprintf(stderr, "Unable to sign kernel blob\n"); free(kblob_data); @@ -288,6 +288,12 @@ int futil_cb_resign_kernel_part(struct futil_traverse_state_s *state) if (!option.version_specified) option.version = preamble->kernel_version; + /* Preserve the flags if not specified */ + if (VbKernelHasFlags(preamble) == VBOOT_SUCCESS) { + if (option.flags_specified == 0) + option.flags = preamble->flags; + } + /* Replace the keyblock if asked */ if (option.keyblock) keyblock = option.keyblock; @@ -296,7 +302,7 @@ int futil_cb_resign_kernel_part(struct futil_traverse_state_s *state) vblock_data = SignKernelBlob(kblob_data, kblob_size, option.padding, option.version, option.kloadaddr, keyblock, option.signprivate, - &vblock_size); + option.flags, &vblock_size); if (!vblock_data) { fprintf(stderr, "Unable to sign kernel blob\n"); return 1; @@ -612,7 +618,8 @@ static const char usage_new_kpart[] = "\n" " --pad NUM The vblock padding size in bytes\n" " (default 0x%x)\n" " --vblockonly Emit just the vblock (requires a\n" - " distinct outfile)\n"; + " distinct outfile)\n" + " -f|--flags NUM The preamble flags value\n"; static const char usage_old_kpart[] = "\n" "-----------------------------------------------------------------\n" @@ -634,6 +641,7 @@ static const char usage_old_kpart[] = "\n" " [--outfile] OUTFILE Output kernel partition or vblock\n" " --vblockonly Emit just the vblock (requires a\n" " distinct OUTFILE)\n" + " -f|--flags NUM The preamble flags value\n" "\n"; static void print_help(const char *prog) |