mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
mmc: fix signed vs unsigned compare in read check in _spl_load()
Fix signed vs unsigned compare in read check in _spl_load() Issue: when info->read() returns a negative value because of an error, the comparison of 'read' (signed) with 'sizeof(*header)' (unsigned silently converts the negative value into a very large unsigned value and the check on the error condition always return false, i.e. the error is not detected Symptoms: if spl_load_image_fat() is unable to find the file 'uImage', the SPL phase of the boot process just hangs after displaying the following line: Trying to boot from MMC1 Fix: cast 'sizeof(*header)' to int so the compare is now between signed types Reference: https://stackoverflow.com/questions/17293749/sizeof-operator-in-if-statement Signed-off-by: Franco Venturi <fventuri@comcast.net> Reviewed-by: Sean Anderson <seanga2@gmail.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
7c2c235a27
commit
cf85cd84aa
1 changed files with 1 additions and 1 deletions
|
@ -22,7 +22,7 @@ static inline int _spl_load(struct spl_image_info *spl_image,
|
|||
|
||||
read = info->read(info, offset, ALIGN(sizeof(*header),
|
||||
spl_get_bl_len(info)), header);
|
||||
if (read < sizeof(*header))
|
||||
if (read < (int)sizeof(*header))
|
||||
return -EIO;
|
||||
|
||||
if (image_get_magic(header) == FDT_MAGIC) {
|
||||
|
|
Loading…
Add table
Reference in a new issue