]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
bootflow: bootmeth_efi: set bflow->fname from bootfile name
authorShantur Rathore <i@shantur.com>
Sun, 19 Nov 2023 16:54:59 +0000 (16:54 +0000)
committerTom Rini <trini@konsulko.com>
Sat, 9 Dec 2023 18:16:08 +0000 (13:16 -0500)
We need to set boot->fname before calling efi_set_bootdev
otherwise this crashes as bflow->fname is null.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Shantur Rathore <i@shantur.com>
boot/bootmeth_efi.c

index 682cf5b23b77bdc0616e9aff49acca1e2ccc1729..fd224f7c91a50f69d58a962b71906f9061af0f30 100644 (file)
@@ -323,7 +323,7 @@ static int distro_efi_read_bootflow_net(struct bootflow *bflow)
        char file_addr[17], fname[256];
        char *tftp_argv[] = {"tftp", file_addr, fname, NULL};
        struct cmd_tbl cmdtp = {};      /* dummy */
-       const char *addr_str, *fdt_addr_str;
+       const char *addr_str, *fdt_addr_str, *bootfile_name;
        int ret, arch, size;
        ulong addr, fdt_addr;
        char str[36];
@@ -360,6 +360,12 @@ static int distro_efi_read_bootflow_net(struct bootflow *bflow)
                return log_msg_ret("sz", -EINVAL);
        bflow->size = size;
 
+    /* bootfile should be setup by dhcp*/
+       bootfile_name = env_get("bootfile");
+       if (!bootfile_name)
+               return log_msg_ret("bootfile_name", ret);
+       bflow->fname = strdup(bootfile_name);
+
        /* do the hideous EFI hack */
        efi_set_bootdev("Net", "", bflow->fname, map_sysmem(addr, 0),
                        bflow->size);