diff mbox series

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

Message ID 20210421114201.57994-1-xnox@ubuntu.com
State Accepted
Commit 75efe7dc996ddb9835590b1a8970f19b5c4b1ade
Delegated to: Ramon Fried
Headers show
Series cmd: pxe_utils: sysboot: fix crash if either board or soc are not set. | expand

Commit Message

Dimitri John Ledkov April 21, 2021, 11:42 a.m. UTC
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@ubuntu.com>
---
 cmd/pxe_utils.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Dimitri John Ledkov May 4, 2021, 10:25 a.m. UTC | #1
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@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@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
>
Ramon Fried May 8, 2021, 6:23 a.m. UTC | #2
On Wed, Apr 21, 2021 at 5:32 PM Dimitri John Ledkov <xnox@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@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
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Dimitri John Ledkov June 15, 2021, 4:14 p.m. UTC | #3
Hi, this patch is still not pulled into master. It still applies
cleanly onto master.

Can this patch please be pulled in? It fixes a crash of uboot.
Without this patch upstream, people who build their own uboot cannot
boot stock Ubuntu images.

What can I do, for this patch to be applied?

On Sat, May 8, 2021 at 7:23 AM Ramon Fried <rfried.dev@gmail.com> wrote:
>
> On Wed, Apr 21, 2021 at 5:32 PM Dimitri John Ledkov <xnox@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@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
> >
> Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Ramon Fried June 18, 2021, 8:25 a.m. UTC | #4
On Tue, Jun 15, 2021 at 7:15 PM Dimitri John Ledkov
<dimitri.ledkov@canonical.com> wrote:
>
> Hi, this patch is still not pulled into master. It still applies
> cleanly onto master.
>
> Can this patch please be pulled in? It fixes a crash of uboot.
> Without this patch upstream, people who build their own uboot cannot
> boot stock Ubuntu images.
>
> What can I do, for this patch to be applied?
>
> On Sat, May 8, 2021 at 7:23 AM Ramon Fried <rfried.dev@gmail.com> wrote:
> >
> > On Wed, Apr 21, 2021 at 5:32 PM Dimitri John Ledkov <xnox@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@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
> > >
> > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
>
>
>
> --
> Regards,
>
> Dimitri.

applied to u-boot-net/master, thanks!

Best regards,
Ramon Fried
diff mbox series

Patch

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);