efi: change heap allocation type to GRUB_EFI_LOADER_CODE
authorLeif Lindholm <leif.lindholm@linaro.org>
Thu, 3 Aug 2017 10:04:32 +0000 (11:04 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Mon, 7 Aug 2017 17:03:34 +0000 (19:03 +0200)
With upcoming changes to EDK2, allocations of type EFI_LOADER_DATA may
not return regions with execute ability. Since modules are loaded onto
the heap, change the heap allocation type to GRUB_EFI_LOADER_CODE in
order to permit execution on systems with this feature enabled.

Closes: 50420

Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
grub-core/kern/efi/mm.c

index b97b05f..ac2a4c5 100644 (file)
@@ -403,7 +403,9 @@ add_memory_regions (grub_efi_memory_descriptor_t *memory_map,
          pages = required_pages;
        }
 
-      addr = grub_efi_allocate_fixed (start, pages);
+      addr = grub_efi_allocate_pages_real (start, pages,
+                                          GRUB_EFI_ALLOCATE_ADDRESS,
+                                          GRUB_EFI_LOADER_CODE);      
       if (! addr)
        grub_fatal ("cannot allocate conventional memory %p with %u pages",
                    (void *) ((grub_addr_t) start),