efi/libstub/x86: Avoid EFI map buffer alloc in allocate_e820()
authorLenny Szubowicz <lszubowi@redhat.com>
Thu, 7 May 2020 18:33:32 +0000 (14:33 -0400)
committerArd Biesheuvel <ardb@kernel.org>
Thu, 14 May 2020 09:11:18 +0000 (11:11 +0200)
commitfd62619598069c974739476d1851a00d665041d7
tree1e09c7a397112e1db2c671edc077b3997d6df96b
parent8f592ada59b321d248391bae175cd78a12972223
efi/libstub/x86: Avoid EFI map buffer alloc in allocate_e820()

In allocate_e820(), call the EFI get_memory_map() service directly
instead of indirectly via efi_get_memory_map(). This avoids allocation
of a buffer and return of the full EFI memory map, which is not needed
here and would otherwise need to be freed.

Routine allocate_e820() only needs to know how many EFI memory
descriptors there are in the map to allocate an adequately sized
e820ext buffer, if it's needed. Note that since efi_get_memory_map()
returns a memory map buffer sized with extra headroom, allocate_e820()
now needs to explicitly factor that into the e820ext size calculation.

Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/efistub.h
drivers/firmware/efi/libstub/mem.c
drivers/firmware/efi/libstub/x86-stub.c