cmd/bootefi: correct command syntax
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Thu, 19 May 2022 06:00:56 +0000 (08:00 +0200)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 28 May 2022 08:59:27 +0000 (10:59 +0200)
For indicating the address and size of a memory region other commands use a
<addr>[:<size>] syntax. Do the same for bootefi.

Fixes: 2058983689f0 ("cmd: bootefi: restore ability to boot arbitrary blob")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
cmd/bootefi.c
doc/usage/cmd/bootefi.rst

index d80353fa7189a344b61f2270d400aff59c49b56a..827fcd97dfd840932b13dc48f1017dee1996c33d 100644 (file)
@@ -649,6 +649,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
                      char *const argv[])
 {
        efi_status_t ret;
+       char *img_addr, *img_size, *str_copy, *pos;
        void *fdt;
 
        if (argc < 2)
@@ -662,7 +663,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
                return CMD_RET_FAILURE;
        }
 
-       if (argc > 2 && strcmp(argv[2], "-")) {
+       if (argc > 2) {
                uintptr_t fdt_addr;
 
                fdt_addr = hextoul(argv[2], NULL);
@@ -684,16 +685,24 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
        if (!strcmp(argv[1], "selftest"))
                return do_efi_selftest();
 #endif
+       str_copy = strdup(argv[1]);
+       if (!str_copy) {
+               log_err("Out of memory\n");
+               return CMD_RET_FAILURE;
+       }
+       pos = str_copy;
+       img_addr = strsep(&pos, ":");
+       img_size = strsep(&pos, ":");
+       ret = do_bootefi_image(img_addr, img_size);
+       free(str_copy);
 
-       return do_bootefi_image(argv[1], argc > 3 ? argv[3] : NULL);
+       return ret;
 }
 
 #ifdef CONFIG_SYS_LONGHELP
 static char bootefi_help_text[] =
-       "<image address> [fdt address [image size]]\n"
-       "  - boot EFI payload stored at <image address>\n"
-       "    fdt address, address of device-tree or '-'\n"
-       "    image size, required if image not preloaded\n"
+       "<image address>[:<image size>] [<fdt address>]\n"
+       "  - boot EFI payload\n"
 #ifdef CONFIG_CMD_BOOTEFI_HELLO
        "bootefi hello\n"
        "  - boot a sample Hello World application stored within U-Boot\n"
index 4cc8c0718c5d8b32257dbaa83d95769c2fca0e35..cb03df4e1ca170fc8211738c307a886e2be05bda 100644 (file)
@@ -9,10 +9,10 @@ Synopsis
 
 ::
 
-    bootefi [image_addr] [fdt_addr [image_size]]
-    bootefi bootmgr [fdt_addr]
-    bootefi hello [fdt_addr]
-    bootefi selftest [fdt_addr]
+    bootefi <image_addr>[:<image_size>] [<fdt_addr>]
+    bootefi bootmgr [<fdt_addr>]
+    bootefi hello [<fdt_addr>]
+    bootefi selftest [<fdt_addr>]
 
 Description
 -----------