[PATCH] spl: spl_load: fix comparison between negative error code and unsigned size

Simon Glass sjg at chromium.org
Sun Sep 1 22:09:41 CEST 2024


Hi Daniel,

On Fri, 30 Aug 2024 at 21:17, Daniel Palmer <daniel at 0x0f.com> wrote:
>
> read could be a negative error value but size in spl_image is unsigned
> so when they are compared read is used as if it's a unsigned value
> and if it's negative it'll most likely be bigger than size and the
> result will be true and _spl_load() will return 0 to the caller.
>
> This results in the caller to _spl_load() not seeing that an error happened
> as it should and continuing as if the load was completed when it might
> not have been.
>
> Check if read is negative and return it's value if it is before comparing
> against size in spl_image.
>
> Signed-off-by: Daniel Palmer <daniel at 0x0f.com>
> ---
>  include/spl_load.h | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>


>
> diff --git a/include/spl_load.h b/include/spl_load.h
> index 1c2b296c0a2c..7de834f402b8 100644
> --- a/include/spl_load.h
> +++ b/include/spl_load.h
> @@ -83,6 +83,10 @@ static inline int _spl_load(struct spl_image_info *spl_image,
>
>         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;
>  }
>
> --
> 2.43.0
>


More information about the U-Boot mailing list