[U-Boot] [PATCH v2 0/6] efi_loader: implement BS.FreePages()/BS.FreePool, some cleanup

Stefan Brüns stefan.bruens at rwth-aachen.de
Sat Oct 1 23:32:22 CEST 2016


Linux 4.8 no longer boots, as it runs out of descriptor space. Readding
the mapping allows reuse, and the next AllocatePool will likely not add
a new mapping.

Also fix some small issues found while debugging.

v2, updated:
  efi_loader: Fix memory map size check to avoid out-of-bounds access
  - (Hopefully) clarified commit message
  efi_loader: Track size of pool allocations to allow freeing
  - rebased on top of 'efi_loader: Fix crash on 32-bit systems'
  - assert correct address in efi_free_pool
  - use EFI_PAGE_MASK instead of 0xfff, EFI_PAGE_SHIFT likewise

v3, added:
  efi_loader: Move efi_allocate_pool implementation to efi_memory.c
v3, updated:
  efi_loader: Fix memory map size check to avoid out-of-bounds access
  - set descriptor_size/_version even if EFI_BUFFER_TOO_SMALL
  efi_loader: Track size of pool allocations to allow freeing
  - use a struct instead of pointer arithmetic, add some comments

Stefan Brüns (7):
  efi_loader: Update description of internal efi_mem_carve_out
  efi_loader: Fix memory map size check to avoid out-of-bounds access
  efi_loader: Move efi_allocate_pool implementation to efi_memory.c
  efi_loader: Track size of pool allocations to allow freeing
  efi_loader: Readd freed pages to memory pool
  efi_loader: Keep memory mapping sorted when splitting an entry
  efi_loader: Do not leak memory when unlinking a mapping

 include/efi_loader.h          |  7 +++-
 lib/efi_loader/efi_boottime.c | 17 ++++----
 lib/efi_loader/efi_memory.c   | 92 +++++++++++++++++++++++++++++++++++++------
 3 files changed, 95 insertions(+), 21 deletions(-)

-- 
2.10.0



More information about the U-Boot mailing list