> Subject: [PATCH v2] 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: > > Signed-off-by: Franco Venturi <[email protected]> > --- > > (no changes since v1) > > include/spl_load.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/spl_load.h b/include/spl_load.h index > 1c2b296c0a..83db381202 100644 > --- a/include/spl_load.h > +++ b/include/spl_load.h > @@ -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) { > --
Reviewed-by: Peng Fan <[email protected]>

