bootm: Fix bmi->images pointer not initialized in some cases
authorBenjamin ROBIN <dev@benjarobin.fr>
Tue, 20 May 2025 20:35:15 +0000 (22:35 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 30 May 2025 19:43:37 +0000 (13:43 -0600)
When building with only bootz command, without bootm, images pointer
inside bootm_info structure is not initialized. And since this structure
is stored in stack, the generated error is kind of random, but most of
the time this will generate: "ramdisk - allocation error".

Also, after analysis, this problem could occur with the command booti,
if the command bootm is disabled.

Currently bootm_init() is called by: do_bootz(), do_bootm(), do_booti()
and by do_stm32prog(). And all of these commands execute bootm_run_states()
which access the images pointer stored into bootm_info structure.

So, to fix this issue, just do the assignment unconditionally.

Fixes: c2211ff65136 ("bootm: Add more fields to bootm_info")
Signed-off-by: Benjamin ROBIN <dev@benjarobin.fr>
Reviewed-by: Tom Rini <trini@konsulko.com>
boot/bootm.c

index f6aa327..108ca7f 100644 (file)
@@ -1169,8 +1169,7 @@ void bootm_init(struct bootm_info *bmi)
 {
        memset(bmi, '\0', sizeof(struct bootm_info));
        bmi->boot_progress = true;
-       if (IS_ENABLED(CONFIG_CMD_BOOTM))
-               bmi->images = &images;
+       bmi->images = &images;
 }
 
 /**