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 <[email protected]>
---
v1 -> v2
- add missing cast to __le32 for calculated crc32
(reported by kernel test robot <[email protected]>)
- 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
--
2.25.1
On 12.10.2022 17: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 <[email protected]>
Acked-by: Rafał Miłecki <[email protected]>
On 10/12/22 17: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 <[email protected]>
Tested-by: Christian Lamparter <[email protected]> # PowerPC/MyBookLive
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 <[email protected]>
> ---
Applied thanks,
--srini
> v1 -> v2
>
> - add missing cast to __le32 for calculated crc32
> (reported by kernel test robot <[email protected]>)
>
> - 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
Hi Srinivas,
On 2022-11-11 18:41, Srinivas Kandagatla wrote:
> 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 <[email protected]>
>> ---
>
> Applied thanks,
has this patch been lost somewhere in the process?
I'm quite sure I saw it in linux-next.git and probably in nvmem.git. Now
it seems to be gone.
Hi Rafal,
On 06/01/2023 19:15, Rafał Miłecki wrote:
> Hi Srinivas,
>
> On 2022-11-11 18:41, Srinivas Kandagatla wrote:
>> 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 <[email protected]>
>>> ---
>>
>> Applied thanks,
>
> has this patch been lost somewhere in the process?
>
> I'm quite sure I saw it in linux-next.git and probably in nvmem.git. Now
> it seems to be gone.
Yes, I had to revert this one as next reported sparse warnings [1] with
this patch which were not addressed.
--srini
[1] https://lore.kernel.org/linux-mm/[email protected]/T/
On 2023-01-09 10:48, Srinivas Kandagatla wrote:
> On 06/01/2023 19:15, Rafał Miłecki wrote:
>> On 2022-11-11 18:41, Srinivas Kandagatla wrote:
>>> 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 <[email protected]>
>>>> ---
>>>
>>> Applied thanks,
>>
>> has this patch been lost somewhere in the process?
>>
>> I'm quite sure I saw it in linux-next.git and probably in nvmem.git.
>> Now
>> it seems to be gone.
> Yes, I had to revert this one as next reported sparse warnings [1]
> with this patch which were not addressed.
I missed that, thank you.
INAGAKI: could you take a look at this, please?
Hi Rafał,
thank you for letting me know.
And for all, sorry for my incomplete patch.
On 2023/01/09 18:52, Rafał Miłecki wrote:
> On 2023-01-09 10:48, Srinivas Kandagatla wrote:
>> On 06/01/2023 19:15, Rafał Miłecki wrote:
>>> On 2022-11-11 18:41, Srinivas Kandagatla wrote:
>>>> 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 <[email protected]>
>>>>> ---
>>>>
>>>> Applied thanks,
>>>
>>> has this patch been lost somewhere in the process?
>>>
>>> I'm quite sure I saw it in linux-next.git and probably in nvmem.git.
>>> Now
>>> it seems to be gone.
>> Yes, I had to revert this one as next reported sparse warnings [1]
>> with this patch which were not addressed.
>
> I missed that, thank you.
>
> INAGAKI: could you take a look at this, please?
To be honest, I'm a newbie in Linux & driver development and don't fully
understand the essence of the warning by "kernel test robot", sorry.
As far as I have seen some similar cases in the past, does it mean that
the type of calculated crc variable("calc") should be changed to __le32?
(Maybe I'm saying something off the mark...)
what I assumed:
__le32 calc;
calc = crc32(~0, buf + crc32_data_offset, crc32_data_len) ^ ~0L;
calc = le32_to_cpu(calc);