U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [BUG report] spl: image size check fails in spl_load()
@ 2025-02-14 11:16 Anshul Dalal
  0 siblings, 0 replies; 6+ messages in thread
From: Anshul Dalal @ 2025-02-14 11:16 UTC (permalink / raw)
  To: u-boot; +Cc: Anshul Dalal, vigneshr, seanga2

Hi all!

I was trying to implement falcon boot on TI AM62x EVM with the kernel image on
SD card's filesystem but the following check in `_spl_load` at
`include/spl_load.h:95` fails to -EIO as per the latest commit [89d3333]:

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

The check seems to be comparing the image size gathered from the header
(spl_image->size) with the number of bytes read form the loader.

From spl_load.h:

	ret = spl_parse_image_header(spl_image, bootdev, header);
	if (ret)
		return ret;

	base_offset = spl_image->offset;
	/* Only NOR sets this flag. */
	if (IS_ENABLED(CONFIG_SPL_NOR_SUPPORT) &&
	    spl_image->flags & SPL_COPY_PAYLOAD_ONLY)
		base_offset += sizeof(*header);
	image_offset = ALIGN_DOWN(base_offset, spl_get_bl_len(info));
	overhead = base_offset - image_offset;
	size = ALIGN(spl_image->size + overhead, spl_get_bl_len(info));

	read = info->read(info, offset + image_offset, size,
			  map_sysmem(spl_image->load_addr - overhead, size));

	if (read < 0)
		return read;

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

During kernel 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. Which leads to failure of the above check.

From linux kernel's `arch/arm64/kernel/image.h:63`:

	#define HEAD_SYMBOLS						\
		DEFINE_IMAGE_LE64(_kernel_size_le, _end - _text);	\
		DEFINE_IMAGE_LE64(_kernel_flags_le, __HEAD_FLAGS);

Disabling the check leads to a successful boot directly to the kernel.
Therefore it seems like the check is non functional as the size in the kernel
header does not correspond with the file size of the kernel image.

Regards,
Anshul

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-21  2:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20250214111251.2349093-1-anshuld@ti.com>
2025-02-15 17:48 ` [BUG report] spl: image size check fails in spl_load() Sean Anderson
2025-02-18  6:07   ` Anshul Dalal
2025-02-19 15:47     ` Sean Anderson
2025-02-20  5:22       ` Anshul Dalal
2025-02-21  2:18         ` Sean Anderson
2025-02-14 11:16 Anshul Dalal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox