> Subject: [PATCH v1] 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: first check if 'read' is negative then check its value against > 'sizeof(*header)' > Reference: > > Signed-off-by: Franco Venturi <fvent...@comcast.net> > --- > > 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..1e05599d29 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 < 0 || read < sizeof(*header))
"read < 0" will imply that "read < sizeof(*header)", so there should no need to include this change. Regards, Peng. > return -EIO; > > if (image_get_magic(header) == FDT_MAGIC) { > -- > 2.45.2