spl: return header size to spl_load in os boot
authorAnshul Dalal <anshuld@ti.com>
Tue, 11 Mar 2025 09:35:45 +0000 (15:05 +0530)
committerTom Rini <trini@konsulko.com>
Sun, 30 Mar 2025 15:15:34 +0000 (09:15 -0600)
commitfd2bccec19d399b4a445009b3d514d2419cfbc95
tree9b508b310540b33fae36e18fe6f54944c31b58a3
parentbcb8cac2d550b6decfbcb2985be276afbec296cf
spl: return header size to spl_load in os boot

During linux build process the header size is computed including the BSS
whereas it's removed when creating the uncompressed image. Therefore the
size of the uncompressed image on filesystem will be smaller than the
size specified in the header.

This causes issues when loading the kernel image from the SPL (as in
falcon boot) with spl_load since it compares the read file size from the
FS to the header size form the image. Which leads to the following check
in `include/spl_load.h` failing to -EIO when loading kernel image:

  return read < spl_image->size ? -EIO : 0;

Therefore we should return the header size back to spl_load instead of
the file size in falcon boot when not loading a FIT image.

Bug report:
https://lore.kernel.org/u-boot/20250214111656.2358748-1-anshuld@ti.com/

Fixes: 775074165d97 ("spl: Add generic spl_load function")
Reported-by: Anshul Dalal <anshuld@ti.com>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
common/spl/spl_ext.c
common/spl/spl_fat.c