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

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

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

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

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

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
participants (3)
-
Dimitri John Ledkov
-
Dimitri John Ledkov
-
Ramon Fried