[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <724bcb6f-775d-a7be-d47c-447dc8ac4c19@milecki.pl>
Date: Mon, 20 Feb 2023 09:01:36 +0100
From: Rafał Miłecki <rafal@...ecki.pl>
To: INAGAKI Hiroshi <musashino.open@...il.com>,
srinivas.kandagatla@...aro.org
Cc: chunkeey@...il.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3] nvmem: u-boot-env: align endianness of crc32 values
On 13.02.2023 14:23, INAGAKI Hiroshi wrote:
> @@ -117,8 +117,8 @@ static int u_boot_env_parse(struct u_boot_env *priv)
> size_t crc32_offset;
> size_t data_offset;
> size_t data_len;
> - uint32_t crc32;
> - uint32_t calc;
> + __le32 crc32;
> + __le32 calc;
> size_t bytes;
> uint8_t *buf;
> int err;
> @@ -152,11 +152,11 @@ static int u_boot_env_parse(struct u_boot_env *priv)
> data_offset = offsetof(struct u_boot_env_image_broadcom, data);
> break;
> }
> - crc32 = le32_to_cpu(*(__le32 *)(buf + crc32_offset));
> + crc32 = cpu_to_le32(*(uint32_t *)(buf + crc32_offset));
> 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 = cpu_to_le32(crc32(~0, buf + crc32_data_offset, crc32_data_len) ^ ~0L);
Can you see what happens on BE device if instead of this whole patch you
just replace crc32() in above line with crc32_le()?
> if (calc != crc32) {
> dev_err(dev, "Invalid calculated CRC32: 0x%08x (expected: 0x%08x)\n", calc, crc32);
> err = -EINVAL;
Powered by blists - more mailing lists