|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 6/7] xen/x86/efi: Verify dom0 kernel with SHIM_LOCK protocol in efi_multiboot2()
>>> On 08.07.17 at 23:53, <daniel.kiper@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -383,9 +383,13 @@ __efi64_mb2_start:
> jmp x86_32_switch
>
> .Lefi_multiboot2_proto:
> - /* Zero EFI SystemTable and EFI ImageHandle addresses. */
> + /*
> + * Zero EFI SystemTable, EFI ImageHandle and
> + * dom0 kernel module struct addresses.
> + */
> xor %esi,%esi
> xor %edi,%edi
> + xor %r14d,%r14d
>
> /* Skip Multiboot2 information fixed part. */
> lea (MB2_fixed_sizeof+MULTIBOOT2_TAG_ALIGN-1)(%rbx),%ecx
> @@ -423,6 +427,15 @@ __efi64_mb2_start:
> cmove MB2_efi64_ih(%rcx),%rdi
> je .Lefi_mb2_next_tag
>
> + /* Get dom0 kernel module struct address from Multiboot2
> information. */
> + cmpl $MULTIBOOT2_TAG_TYPE_MODULE,MB2_tag_type(%rcx)
> + jne .Lefi_mb2_end
> +
> + test %r14d,%r14d
> + cmovz %ecx,%r14d
> + jmp .Lefi_mb2_next_tag
> +
> +.Lefi_mb2_end:
> /* Is it the end of Multiboot2 information? */
> cmpl $MULTIBOOT2_TAG_TYPE_END,MB2_tag_type(%rcx)
> je .Lrun_bs
> @@ -484,9 +497,12 @@ __efi64_mb2_start:
> /* Keep the stack aligned. Do not pop a single item off it. */
> mov (%rsp),%rdi
>
> + mov %r14d,%edx
> +
> /*
> * efi_multiboot2() is called according to System V AMD64 ABI:
> - * - IN: %rdi - EFI ImageHandle, %rsi - EFI SystemTable.
> + * - IN: %rdi - EFI ImageHandle, %rsi - EFI SystemTable,
> + * %rdx - dom0 kernel module struct address.
How come everything further up treats this as a 32-bit quantity only?
> @@ -47,6 +49,7 @@ extern const struct pe_base_relocs {
>
> static void __init efi_arch_relocate_image(unsigned long delta)
> {
> +#if 0
> const struct pe_base_relocs *base_relocs;
>
> for ( base_relocs = __base_relocs_start; base_relocs <
> __base_relocs_end; )
> @@ -95,6 +98,7 @@ static void __init efi_arch_relocate_image(unsigned long
> delta)
> }
> base_relocs = (const void *)(base_relocs->entries + i + (i & 1));
> }
> +#endif
> }
???
> @@ -669,7 +673,9 @@ static bool __init
> efi_arch_use_config_file(EFI_SYSTEM_TABLE *SystemTable)
>
> static void efi_arch_flush_dcache_area(const void *vaddr, UINTN size) { }
>
> -void __init efi_multiboot2(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE
> *SystemTable)
> +void __init efi_multiboot2(EFI_HANDLE ImageHandle,
> + EFI_SYSTEM_TABLE *SystemTable,
> + multiboot2_tag_module_t *dom0_kernel)
const?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |