[PATCH] bootstd: Fix relative path use in extlinux bootmeth

Simon Glass sjg at chromium.org
Mon Jun 12 23:17:49 CEST 2023


Hi Jonas,

On Fri, 9 Jun 2023 at 15:59, Jonas Karlman <jonas at kwiboo.se> wrote:
>
> Using relative path in a /boot/extlinux/extlinux.conf file fails to load
> linux kernel.
>
> Using a /boot/extlinux/extlinux.conf file:
>
>   LABEL test
>     LINUX ../linux/Image
>
> Result in following error:
>
>   Retrieving file: ../linux/Image
>   Skipping test for failure retrieving kernel
>   Boot failed (err=-14)
>
> However, using sysboot cmd successfully load kernel using same file:
>
>   sysboot mmc 1:1 any ${scriptaddr} /boot/extlinux/extlinux.conf
>
>   Retrieving file: /boot/extlinux/../linux/Image
>
> Fix relative path using bootmeth extlinux by supplying bootfile path
> instead of subdir path in the call to pxe_setup_ctx, same as done in the
> sysboot command.
>
> Fixes: 31aefaf89a5b ("bootstd: Add an implementation of distro boot")
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> ---
>  boot/bootmeth_extlinux.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg at chromium.org>

Thank you for the fix.

I'd like to find a way to test some of this internal code, but so far
have not had any easy ideas.

>
> diff --git a/boot/bootmeth_extlinux.c b/boot/bootmeth_extlinux.c
> index 24be0760229c..6b2b84003836 100644
> --- a/boot/bootmeth_extlinux.c
> +++ b/boot/bootmeth_extlinux.c
> @@ -150,7 +150,7 @@ static int extlinux_boot(struct udevice *dev, struct bootflow *bflow)
>         info.dev = dev;
>         info.bflow = bflow;
>         ret = pxe_setup_ctx(&ctx, &cmdtp, extlinux_getfile, &info, true,
> -                           bflow->subdir, false);
> +                           bflow->fname, false);
>         if (ret)
>                 return log_msg_ret("ctx", -EINVAL);
>
> --
> 2.40.1
>

Regards,
Simon


More information about the U-Boot mailing list