[PATCH] cmd: pxe_utils: sysboot: fix crash if either board or soc are not set.

Dimitri John Ledkov dimitri.ledkov at canonical.com
Tue May 4 12:25:09 CEST 2021


Hi qemu-board meaintainers,

The below patch affects any boards that do not have either board or
soc variables set.

Of which non-x86 qemu boards are exactly that, preventing to netboot
the same rootfs across multiple boards and qemu at the same time.

Another alternative would be for all non-x86 qemu boards to also define
config SYS_SOC
        default "qemu"

However, I fear similar situation might still arise in the future
where some boards lack either SYS_BOARD or SYS_SOC definitions. Thus
even if non-qemu boards are fixed up, the below should still be
applied?

Do you want me to send a separate patch to add SYS_SOC to all qemu boards?

On Wed, Apr 21, 2021 at 3:32 PM Dimitri John Ledkov <xnox at ubuntu.com> wrote:
>
> If the environment does not have "soc" or "board" set, and fdtdir
> option is specified in extlinux.conf, the bootloader will crash whilst
> dereferencing a null pointer. Add a guard against null soc or
> board. Fixes a crash of qemu-riscv64_smode configuration, which does
> not have CONFIG_SYS_SOC defined.
>
> Signed-off-by: Dimitri John Ledkov <xnox at ubuntu.com>
> ---
>  cmd/pxe_utils.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c
> index 71c5af4c25..9a30629e26 100644
> --- a/cmd/pxe_utils.c
> +++ b/cmd/pxe_utils.c
> @@ -587,6 +587,14 @@ static int label_boot(struct cmd_tbl *cmdtp, struct pxe_label *label)
>                                 f2 = "-";
>                                 f3 = env_get("board");
>                                 f4 = ".dtb";
> +                               if (!f1) {
> +                                       f1 = "";
> +                                       f2 = "";
> +                               }
> +                               if (!f3) {
> +                                       f2 = "";
> +                                       f3 = "";
> +                               }
>                         }
>
>                         len = strlen(label->fdtdir);
> --
> 2.27.0
>


-- 
Regards,

Dimitri.


More information about the U-Boot mailing list