bootstd: Fix bootflow info for efi_mgr
authorSam Protsenko <semen.protsenko@linaro.org>
Fri, 3 Oct 2025 22:27:14 +0000 (17:27 -0500)
committerTom Rini <trini@konsulko.com>
Mon, 13 Oct 2025 20:54:33 +0000 (14:54 -0600)
A "Synchronous Abort" CPU exception happens on an attempt to run the
"bootflow info" command for a global boot method (e.g. efi_mgr):

    => bootflow select 0
    => bootflow info

    "Synchronous Abort" handler, esr 0x96000006, far 0x8

It happens because do_bootflow_info() tries to dereference bflow->dev,
which is NULL in case of efi_mgr. Add the corresponding check to prevent
this NULL pointer dereference and make "bootflow info" command work
properly for global boot methods.

Fixes: 2d653f686b6d ("bootstd: Add a bootflow command")
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
cmd/bootflow.c

index 551dffb..081f64e 100644 (file)
@@ -404,7 +404,7 @@ static int do_bootflow_info(struct cmd_tbl *cmdtp, int flag, int argc,
        }
 
        printf("Name:      %s\n", bflow->name);
-       printf("Device:    %s\n", bflow->dev->name);
+       printf("Device:    %s\n", bflow->dev ? bflow->dev->name : "(none)");
        printf("Block dev: %s\n", bflow->blk ? bflow->blk->name : "(none)");
        printf("Method:    %s\n", bflow->method->name);
        printf("State:     %s\n", bootflow_state_get_name(bflow->state));