[U-Boot] [PATCH V3 1/2] spl: Fix redundant image of uboot

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Wed Jul 11 11:37:16 UTC 2018


Hi Lothar

On Fri, Jul 6, 2018 at 5:09 PM, Michael Trimarchi
<michael at amarulasolutions.com> wrote:
> We need to address the redundat image case and undestand if the
> image is corrupted or not. In error case we need to try the fallback copy.
> The function used before was always return 0 without any evaluation of the
> error. We try to make it work properly
>
> Signed-off-by: Michael Trimarchi <michael at amarulasolutions.com>

Any more comment?

Michael

> ---
> Changes V2->V3:
>         Fix patch mistake due the a wrong edit of it
> Changes V1->V2:
>         Address the comments on using the err variable
> ---
>  common/spl/spl_nand.c | 34 +++++++++++++++++++++++++---------
>  1 file changed, 25 insertions(+), 9 deletions(-)
>
> diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
> index 9a52500..f00246d 100644
> --- a/common/spl/spl_nand.c
> +++ b/common/spl/spl_nand.c
> @@ -44,9 +44,7 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
>  {
>         int err;
>
> -       err = nand_spl_load_image(offset, sizeof(*header), (void *)header);
> -       if (err)
> -               return err;
> +       nand_spl_load_image(offset, sizeof(*header), (void *)header);
>
>         if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
>             image_get_magic(header) == FDT_MAGIC) {
> @@ -59,13 +57,31 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
>                 load.bl_len = 1;
>                 load.read = spl_nand_fit_read;
>                 return spl_load_simple_fit(spl_image, &load, offset, header);
> -       } else {
> -               err = spl_parse_image_header(spl_image, header);
> -               if (err)
> -                       return err;
> -               return nand_spl_load_image(offset, spl_image->size,
> -                                          (void *)(ulong)spl_image->load_addr);
>         }
> +       err = spl_parse_image_header(spl_image, header);
> +       if (err)
> +               return err;
> +
> +       nand_spl_load_image(offset, spl_image->size,
> +                          (void *)(ulong)spl_image->load_addr);
> +
> +       /*
> +        * Verify the crc of the header
> +        */
> +       if (!image_check_hcrc((const image_header_t *)spl_image->load_addr)) {
> +               debug("Header checksum failed\n");
> +               return -EINVAL;
> +       }
> +
> +       /*
> +        * Verify the crc of the data
> +        */
> +       if (!image_check_dcrc((const image_header_t *)spl_image->load_addr)) {
> +               debug("Image checksum failed\n");
> +               return -EINVAL;
> +       }
> +
> +       return 0;
>  }
>
>  static int spl_nand_load_image(struct spl_image_info *spl_image,
> --
> 2.7.4
>
> --
> | Michael Nazzareno Trimarchi                     Amarula Solutions BV |
> | COO  -  Founder                                      Cruquiuskade 47 |
> | +31(0)851119172                                 Amsterdam 1018 AM NL |
> |                  [`as] http://www.amarulasolutions.com               |



-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |


More information about the U-Boot mailing list