loader.efi: make sure kernel image is executable
The Windows Dev Kit 2023 (Volterra) has an UEFI implementation that maps EfiLoaderData pages as non-executable. Map the kernel as EfiLoaderCode to ensure that it can be executed. With this change and another in review, FreeBSD boots to the mountroot prompt if hw.pac.enable = 0 is set in loader.conf(5). Reviewed by: andrew, imp, tsoome Sponsored by: Berliner Linux User Group e.V. Sponsored by: spline / FU-Berlin Differential Revision: https://reviews.freebsd.org/D37931
This commit is contained in:
parent
0deb25bd9d
commit
95fa2e0aee
@ -330,7 +330,7 @@ efi_copy_init(void)
|
||||
|
||||
staging = get_staging_max();
|
||||
#endif
|
||||
status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderData,
|
||||
status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderCode,
|
||||
nr_pages, &staging);
|
||||
if (EFI_ERROR(status)) {
|
||||
printf("failed to allocate staging area: %lu\n",
|
||||
@ -398,7 +398,7 @@ efi_check_space(vm_offset_t end)
|
||||
|
||||
/* Try to allocate more space after the previous allocation */
|
||||
addr = staging_end;
|
||||
status = BS->AllocatePages(AllocateAddress, EfiLoaderData, nr_pages,
|
||||
status = BS->AllocatePages(AllocateAddress, EfiLoaderCode, nr_pages,
|
||||
&addr);
|
||||
if (!EFI_ERROR(status)) {
|
||||
staging_end = staging_end + nr_pages * EFI_PAGE_SIZE;
|
||||
@ -415,7 +415,7 @@ before_staging:
|
||||
addr = rounddown2(addr, M(2));
|
||||
#endif
|
||||
nr_pages = EFI_SIZE_TO_PAGES(staging_base - addr);
|
||||
status = BS->AllocatePages(AllocateAddress, EfiLoaderData, nr_pages,
|
||||
status = BS->AllocatePages(AllocateAddress, EfiLoaderCode, nr_pages,
|
||||
&addr);
|
||||
if (!EFI_ERROR(status)) {
|
||||
/*
|
||||
@ -438,7 +438,7 @@ expand:
|
||||
#if defined(__i386__) || defined(__amd64__)
|
||||
new_base = get_staging_max();
|
||||
#endif
|
||||
status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderData,
|
||||
status = BS->AllocatePages(EFI_ALLOC_METHOD, EfiLoaderCode,
|
||||
nr_pages, &new_base);
|
||||
if (!EFI_ERROR(status)) {
|
||||
#if EFI_STAGING_2M_ALIGN
|
||||
|
Loading…
x
Reference in New Issue
Block a user