efi/libstub: use pool allocation for the command line
Ard Biesheuvel
maintainerPATCH 1/1 efi/libstub: use pool allocation for the command line
Now that we removed the memory limit for the allocation of the command line, there is no longer a need to use the page based allocator so switch to a pool allocation instead.
Signed-off-by Ard Biesheuvel <[email protected]>
--- drivers/firmware/efi/libstub/efi-stub-helper.c | 6 +++--- drivers/firmware/efi/libstub/efi-stub.c | 4 ++-- drivers/firmware/efi/libstub/efistub.h | 3 +-- drivers/firmware/efi/libstub/x86-stub.c | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-)
drivers/firmware/efi/libstub/efi-stub-helper.c +3 -3
@@ -210,8 +210,7 @@ efi_status_t efi_parse_options(char const *cmdline)* Size of memory allocated return in *cmd_line_len. * Returns NULL on error. */ -char *efi_convert_cmdline (efi_loaded_image_t *image, -int *cmd_line_len,unsigned long max_addr) +char *efi_convert_cmdline (efi_loaded_image_t *image,int *cmd_line_len) {const u16 *s2;unsigned long cmdline_addr =0 ;
@@ -257,7 +256,8 @@ char *efi_convert_cmdline(efi_loaded_image_t *image, options_bytes++;/* NUL termination */ - status =efi_allocate_pages (options_bytes, &cmdline_addr, max_addr); + status =efi_bs_call (allocate_pool,EFI_LOADER_DATA , options_bytes, + (void **)&cmdline_addr);if (status !=EFI_SUCCESS )return NULL ;
drivers/firmware/efi/libstub/efi-stub.c +2 -2
@@ -198,7 +198,7 @@ efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg)* protocol. We are going to copy the command line into the * device tree, so this can be allocated anywhere. */ - cmdline_ptr =efi_convert_cmdline (image, &cmdline_size,ULONG_MAX ); + cmdline_ptr =efi_convert_cmdline (image, &cmdline_size);if (!cmdline_ptr) {efi_err ("getting command line via LOADED_IMAGE_PROTOCOL\n" ); status =EFI_OUT_OF_RESOURCES ;
@@ -339,7 +339,7 @@ efi_status_t efi_entry(efi_handle_t handle, efi_system_table_t *sys_table_arg) fail_free_screeninfo:free_screen_info (si); fail_free_cmdline: -efi_free (cmdline_size, (unsigned long )cmdline_ptr); +efi_bs_call (free_pool, cmdline_ptr); fail:return status; }
drivers/firmware/efi/libstub/efistub.h +1 -2
@@ -708,8 +708,7 @@ __printf(1, 2) int efi_printk(char const *fmt, ...);void efi_free (unsigned long size,unsigned long addr); -char *efi_convert_cmdline (efi_loaded_image_t *image,int *cmd_line_len, -unsigned long max_addr); +char *efi_convert_cmdline (efi_loaded_image_t *image,int *cmd_line_len);efi_status_t efi_get_memory_map (struct efi_boot_memmap *map);
drivers/firmware/efi/libstub/x86-stub.c +1 -1
@@ -404,7 +404,7 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle, hdr->type_of_loader =0x21 ;/* Convert unicode cmdline to ascii */ - cmdline_ptr =efi_convert_cmdline (image, &options_size,ULONG_MAX ); + cmdline_ptr =efi_convert_cmdline (image, &options_size);if (!cmdline_ptr) goto fail;
Signature · 1 line
2.17.1