From dc2eaa5855ecff4bd13ebf7b1cc998397adced93 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Wed, 25 Jan 2017 14:54:46 -0800 Subject: [PATCH] loader: Add arm64 verity Signed-off-by: Geoff Levand --- grub-core/loader/arm64/linux.c | 6 +++++- include/grub/verity-hash.h | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c index 9519d2e4d..432f5c073 100644 --- a/grub-core/loader/arm64/linux.c +++ b/grub-core/loader/arm64/linux.c @@ -32,6 +32,8 @@ #include #include +#include + GRUB_MOD_LICENSE ("GPLv3+"); static grub_dl_t my_mod; @@ -297,7 +299,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), grub_dprintf ("linux", "kernel @ %p\n", kernel_addr); - cmdline_size = grub_loader_cmdline_size (argc, argv) + sizeof (LINUX_IMAGE); + cmdline_size = grub_loader_cmdline_size (argc, argv) + sizeof (LINUX_IMAGE) + + VERITY_CMDLINE_LENGTH; linux_args = grub_malloc (cmdline_size); if (!linux_args) { @@ -311,6 +314,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), if (grub_errno == GRUB_ERR_NONE) { + grub_pass_verity_hash (kernel_addr, linux_args, cmdline_size); grub_loader_set (grub_linux_boot, grub_linux_unload, 0); loaded = 1; } diff --git a/include/grub/verity-hash.h b/include/grub/verity-hash.h index 7222d5b87..f79bb5d4c 100644 --- a/include/grub/verity-hash.h +++ b/include/grub/verity-hash.h @@ -4,7 +4,14 @@ #define VERITY_ARG_LENGTH (sizeof (VERITY_ARG) - 1) #define VERITY_HASH_LENGTH 64 #define VERITY_CMDLINE_LENGTH ((VERITY_ARG_LENGTH)+(VERITY_HASH_LENGTH)) -#define VERITY_HASH_OFFSET 0x40 + +#if defined(__aarch64__) +# define VERITY_HASH_OFFSET 512 +#elif defined(__i386__) +# define VERITY_HASH_OFFSET 0x40 +#else +# error Unsupported arch +#endif /**