2022-10-12 17:18:40

by INAGAKI Hiroshi

[permalink] [raw]
Subject: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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


2022-10-17 15:54:35

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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]>

2022-11-04 17:04:40

by Christian Lamparter

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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

2022-11-11 17:59:23

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values



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

2023-01-06 20:08:39

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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.

2023-01-09 09:55:56

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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/

2023-01-09 11:44:06

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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?

2023-01-10 13:23:32

by INAGAKI Hiroshi

[permalink] [raw]
Subject: Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values

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);