efi/libstub: remove unnecessary cmd_line_len from efi_convert_cmdline()
authorJonathan Marek <jonathan@marek.ca>
Sun, 13 Oct 2024 05:11:57 +0000 (01:11 -0400)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 15 Oct 2024 18:04:11 +0000 (20:04 +0200)
efi_convert_cmdline() always sets cmdline_size to at least 1 on success,
so the "cmdline_size > 0" does nothing and can be removed (the intent
was to avoid parsing an empty string, but there is nothing wrong with
parsing an empty string, it is only making boot negligibly slower).

Then the cmd_line_len argument to efi_convert_cmdline can be removed
because there is nothing left using it.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/efi-stub-helper.c
drivers/firmware/efi/libstub/efi-stub.c
drivers/firmware/efi/libstub/efistub.h
drivers/firmware/efi/libstub/x86-stub.c

index de659f6..e7346f8 100644 (file)
@@ -327,7 +327,7 @@ fail:
  * 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)
+char *efi_convert_cmdline(efi_loaded_image_t *image)
 {
        const efi_char16_t *options = efi_table_attr(image, load_options);
        u32 options_size = efi_table_attr(image, load_options_size);
@@ -405,7 +405,6 @@ char *efi_convert_cmdline(efi_loaded_image_t *image, int *cmd_line_len)
        snprintf((char *)cmdline_addr, options_bytes, "%.*ls",
                 options_bytes - 1, options);
 
-       *cmd_line_len = options_bytes;
        return (char *)cmdline_addr;
 }
 
index 2a1b43f..f09e277 100644 (file)
@@ -112,7 +112,6 @@ static u32 get_supported_rt_services(void)
 
 efi_status_t efi_handle_cmdline(efi_loaded_image_t *image, char **cmdline_ptr)
 {
-       int cmdline_size = 0;
        efi_status_t status;
        char *cmdline;
 
@@ -121,7 +120,7 @@ efi_status_t efi_handle_cmdline(efi_loaded_image_t *image, char **cmdline_ptr)
         * protocol. We are going to copy the command line into the
         * device tree, so this can be allocated anywhere.
         */
-       cmdline = efi_convert_cmdline(image, &cmdline_size);
+       cmdline = efi_convert_cmdline(image);
        if (!cmdline) {
                efi_err("getting command line via LOADED_IMAGE_PROTOCOL\n");
                return EFI_OUT_OF_RESOURCES;
@@ -137,7 +136,7 @@ efi_status_t efi_handle_cmdline(efi_loaded_image_t *image, char **cmdline_ptr)
                }
        }
 
-       if (!IS_ENABLED(CONFIG_CMDLINE_FORCE) && cmdline_size > 0) {
+       if (!IS_ENABLED(CONFIG_CMDLINE_FORCE)) {
                status = efi_parse_options(cmdline);
                if (status != EFI_SUCCESS) {
                        efi_err("Failed to parse options\n");
index 685098f..76e44c1 100644 (file)
@@ -1056,7 +1056,7 @@ void efi_free(unsigned long size, unsigned long addr);
 
 void efi_apply_loadoptions_quirk(const void **load_options, u32 *load_options_size);
 
-char *efi_convert_cmdline(efi_loaded_image_t *image, int *cmd_line_len);
+char *efi_convert_cmdline(efi_loaded_image_t *image);
 
 efi_status_t efi_get_memory_map(struct efi_boot_memmap **map,
                                bool install_cfg_tbl);
index f8e465d..188c800 100644 (file)
@@ -537,7 +537,6 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
        efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID;
        struct boot_params *boot_params;
        struct setup_header *hdr;
-       int options_size = 0;
        efi_status_t status;
        unsigned long alloc;
        char *cmdline_ptr;
@@ -569,7 +568,7 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
        hdr->initrd_addr_max = INT_MAX;
 
        /* Convert unicode cmdline to ascii */
-       cmdline_ptr = efi_convert_cmdline(image, &options_size);
+       cmdline_ptr = efi_convert_cmdline(image);
        if (!cmdline_ptr) {
                efi_free(PARAM_SIZE, alloc);
                efi_exit(handle, EFI_OUT_OF_RESOURCES);