lkml.org 
[lkml]   [2022]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
From


On 12/10/2022 16:51, INAGAKI Hiroshi wrote:
> This patch fixes crc32 error on Big-Endianness system by conversion of
> calculated crc32 value.
>
> Little-Endianness system:
>
> obtained crc32: Little
> calculated crc32: Little
>
> Big-Endianness system:
>
> obtained crc32: Little
> calculated crc32: Big
>
> log (APRESIA ApresiaLightGS120GT-SS, RTL8382M, Big-Endianness):
>
> [ 8.570000] u_boot_env 18001200.spi:flash@0:partitions:partition@c0000: Invalid calculated CRC32: 0x88cd6f09 (expected: 0x096fcd88)
> [ 8.580000] u_boot_env: probe of 18001200.spi:flash@0:partitions:partition@c0000 failed with error -22
>
> Fixes: f955dc1445069 ("nvmem: add driver handling U-Boot environment variables")
>
> Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
> ---

Applied thanks,

--srini
> v1 -> v2
>
> - add missing cast to __le32 for calculated crc32
> (reported by kernel test robot <lkp@intel.com>)
>
> - add missing "Fixes:" tag
>
> drivers/nvmem/u-boot-env.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/nvmem/u-boot-env.c b/drivers/nvmem/u-boot-env.c
> index 8e72d1bbd649..b5aacf805fc6 100644
> --- a/drivers/nvmem/u-boot-env.c
> +++ b/drivers/nvmem/u-boot-env.c
> @@ -143,7 +143,7 @@ static int u_boot_env_parse(struct u_boot_env *priv)
> crc32_data_len = priv->mtd->size - crc32_data_offset;
> data_len = priv->mtd->size - data_offset;
>
> - calc = crc32(~0, buf + crc32_data_offset, crc32_data_len) ^ ~0L;
> + calc = le32_to_cpu((__le32)crc32(~0, buf + crc32_data_offset, crc32_data_len) ^ ~0L);
> if (calc != crc32) {
> dev_err(dev, "Invalid calculated CRC32: 0x%08x (expected: 0x%08x)\n", calc, crc32);
> err = -EINVAL;
>
> base-commit: 60bbaad38109684b156e21112322e0a922f92cde

\
 
 \ /
  Last update: 2022-11-11 18:42    [W:0.104 / U:2.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site