linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
@ 2022-10-12 15:51 INAGAKI Hiroshi
  2022-10-17  8:43 ` Rafał Miłecki
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: INAGAKI Hiroshi @ 2022-10-12 15:51 UTC (permalink / raw)
  To: rafal, srinivas.kandagatla; +Cc: linux-kernel, INAGAKI Hiroshi

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


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2022-10-12 15:51 [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values INAGAKI Hiroshi
@ 2022-10-17  8:43 ` Rafał Miłecki
  2022-11-04 16:43 ` Christian Lamparter
  2022-11-11 17:41 ` Srinivas Kandagatla
  2 siblings, 0 replies; 8+ messages in thread
From: Rafał Miłecki @ 2022-10-17  8:43 UTC (permalink / raw)
  To: INAGAKI Hiroshi, srinivas.kandagatla; +Cc: linux-kernel

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 <musashino.open@gmail.com>

Acked-by: Rafał Miłecki <rafal@milecki.pl>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2022-10-12 15:51 [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values INAGAKI Hiroshi
  2022-10-17  8:43 ` Rafał Miłecki
@ 2022-11-04 16:43 ` Christian Lamparter
  2022-11-11 17:41 ` Srinivas Kandagatla
  2 siblings, 0 replies; 8+ messages in thread
From: Christian Lamparter @ 2022-11-04 16:43 UTC (permalink / raw)
  To: INAGAKI Hiroshi, rafal, srinivas.kandagatla; +Cc: linux-kernel

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 <musashino.open@gmail.com>

Tested-by: Christian Lamparter <chunkeey@gmail.com> # PowerPC/MyBookLive

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2022-10-12 15:51 [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values INAGAKI Hiroshi
  2022-10-17  8:43 ` Rafał Miłecki
  2022-11-04 16:43 ` Christian Lamparter
@ 2022-11-11 17:41 ` Srinivas Kandagatla
  2023-01-06 19:15   ` Rafał Miłecki
  2 siblings, 1 reply; 8+ messages in thread
From: Srinivas Kandagatla @ 2022-11-11 17:41 UTC (permalink / raw)
  To: INAGAKI Hiroshi, rafal; +Cc: linux-kernel



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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2022-11-11 17:41 ` Srinivas Kandagatla
@ 2023-01-06 19:15   ` Rafał Miłecki
  2023-01-09  9:48     ` Srinivas Kandagatla
  0 siblings, 1 reply; 8+ messages in thread
From: Rafał Miłecki @ 2023-01-06 19:15 UTC (permalink / raw)
  To: Srinivas Kandagatla; +Cc: INAGAKI Hiroshi, linux-kernel

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 <musashino.open@gmail.com>
>> ---
> 
> 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.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2023-01-06 19:15   ` Rafał Miłecki
@ 2023-01-09  9:48     ` Srinivas Kandagatla
  2023-01-09  9:52       ` Rafał Miłecki
  0 siblings, 1 reply; 8+ messages in thread
From: Srinivas Kandagatla @ 2023-01-09  9:48 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: INAGAKI Hiroshi, linux-kernel

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 <musashino.open@gmail.com>
>>> ---
>>
>> 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/202212040713.rVney9e8-lkp@intel.com/T/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2023-01-09  9:48     ` Srinivas Kandagatla
@ 2023-01-09  9:52       ` Rafał Miłecki
  2023-01-10 13:04         ` INAGAKI Hiroshi
  0 siblings, 1 reply; 8+ messages in thread
From: Rafał Miłecki @ 2023-01-09  9:52 UTC (permalink / raw)
  To: Srinivas Kandagatla; +Cc: INAGAKI Hiroshi, linux-kernel

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 <musashino.open@gmail.com>
>>>> ---
>>> 
>>> 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?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values
  2023-01-09  9:52       ` Rafał Miłecki
@ 2023-01-10 13:04         ` INAGAKI Hiroshi
  0 siblings, 0 replies; 8+ messages in thread
From: INAGAKI Hiroshi @ 2023-01-10 13:04 UTC (permalink / raw)
  To: Rafał Miłecki, Srinivas Kandagatla; +Cc: linux-kernel

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 <musashino.open@gmail.com>
>>>>> ---
>>>>
>>>> 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);


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-01-10 13:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-12 15:51 [PATCH v2] nvmem: u-boot-env: align endianness of crc32 values INAGAKI Hiroshi
2022-10-17  8:43 ` Rafał Miłecki
2022-11-04 16:43 ` Christian Lamparter
2022-11-11 17:41 ` Srinivas Kandagatla
2023-01-06 19:15   ` Rafał Miłecki
2023-01-09  9:48     ` Srinivas Kandagatla
2023-01-09  9:52       ` Rafał Miłecki
2023-01-10 13:04         ` INAGAKI Hiroshi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).