protos/chainload: Fix bug that could result in bogus oom errors. Fixes #302
This commit is contained in:
parent
898fe82b62
commit
277cec6c88
@ -217,15 +217,13 @@ noreturn void efi_chainload_file(char *config, char *cmdline, struct file_handle
|
|||||||
|
|
||||||
EFI_HANDLE efi_part_handle = image->efi_part_handle;
|
EFI_HANDLE efi_part_handle = image->efi_part_handle;
|
||||||
|
|
||||||
void *_ptr = freadall(image, MEMMAP_RESERVED);
|
void *ptr = freadall(image, MEMMAP_RESERVED);
|
||||||
size_t image_size = image->size;
|
size_t image_size = image->size;
|
||||||
void *ptr;
|
|
||||||
status = gBS->AllocatePool(EfiLoaderData, image_size, &ptr);
|
|
||||||
if (status)
|
|
||||||
panic(true, "chainload: Allocation failure");
|
|
||||||
memcpy(ptr, _ptr, image_size);
|
|
||||||
|
|
||||||
pmm_free(_ptr, image->size);
|
memmap_alloc_range_in(untouched_memmap, &untouched_memmap_entries,
|
||||||
|
(uintptr_t)ptr, ALIGN_UP(image_size, 4096),
|
||||||
|
MEMMAP_RESERVED, MEMMAP_USABLE, true, false, true);
|
||||||
|
|
||||||
fclose(image);
|
fclose(image);
|
||||||
|
|
||||||
term_notready();
|
term_notready();
|
||||||
|
Loading…
Reference in New Issue
Block a user