Re: Problems with csum_partial with misaligned buffers on sh4 platform

"Linux regression tracking (Thorsten Leemhuis)" <[email protected]>
Newsgroups gmane.linux.ports.sh.devel,gmane.linux.kernel
Message-ID <[email protected]>
On 11.03.24 18:04, Guenter Roeck wrote:
> On Sat, Feb 10, 2024 at 07:12:39AM -0800, Guenter Roeck wrote:
>>
>> when running checksum unit tests on sh4 qemu emulations, I get the following
>> errors.
> 
> Adding to regression tracker.
> 
> #regzbot ^introduced cadc4e1a2b4d2

Hmmm, thx for that, but well, I'm a bit taken back and forth here. That
commit afaics is from v3.0-rc1 and Linus iirc at least once said
something along the lines of "a regression only reported after a long
time at some point becomes just a bug". I'd say that applies there,
which is why I'm wondering if tracking this really is worth it.

Ciao, Thorsten


>>     KTAP version 1
>>     # Subtest: checksum
>>     # module: checksum_kunit
>>     1..5
>>     # test_csum_fixed_random_inputs: ASSERTION FAILED at lib/checksum_kunit.c:500
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 53378 (0xd082)
>>         ( u64)expec == 33488 (0x82d0)
>>     not ok 1 test_csum_fixed_random_inputs
>>     # test_csum_all_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:525
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 65281 (0xff01)
>>         ( u64)expec == 65280 (0xff00)
>>     not ok 2 test_csum_all_carry_inputs
>>     # test_csum_no_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:573
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 65535 (0xffff)
>>         ( u64)expec == 65534 (0xfffe)
>>     not ok 3 test_csum_no_carry_inputs
>>     ok 4 test_ip_fast_csum
>>     ok 5 test_csum_ipv6_magic
>> # checksum: pass:2 fail:3 skip:0 total:5
>>
>> The above is with from a little endian system. On a big endian system,
>> the test result is as follows.
>>
>>     KTAP version 1
>>     # Subtest: checksum
>>     # module: checksum_kunit
>>     1..5
>>     # test_csum_fixed_random_inputs: ASSERTION FAILED at lib/checksum_kunit.c:500
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 33488 (0x82d0)
>>         ( u64)expec == 53378 (0xd082)
>>     not ok 1 test_csum_fixed_random_inputs
>>     # test_csum_all_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:525
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 65281 (0xff01)
>>         ( u64)expec == 255 (0xff)
>>     not ok 2 test_csum_all_carry_inputs
>>     # test_csum_no_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:565
>>     Expected ( u64)result == ( u64)expec, but
>>         ( u64)result == 1020 (0x3fc)
>>         ( u64)expec == 0 (0x0)
>>     not ok 3 test_csum_no_carry_inputs
>>     # test_ip_fast_csum: ASSERTION FAILED at lib/checksum_kunit.c:589
>>     Expected ( u64)expected == ( u64)csum_result, but
>>         ( u64)expected == 55939 (0xda83)
>>         ( u64)csum_result == 33754 (0x83da)
>>     not ok 4 test_ip_fast_csum
>>     # test_csum_ipv6_magic: ASSERTION FAILED at lib/checksum_kunit.c:617
>>     Expected ( u64)expected_csum_ipv6_magic[i] == ( u64)csum_ipv6_magic(saddr, daddr, len, proto, csum), but
>>         ( u64)expected_csum_ipv6_magic[i] == 6356 (0x18d4)
>>         ( u64)csum_ipv6_magic(saddr, daddr, len, proto, csum) == 43586 (0xaa42)
>>     not ok 5 test_csum_ipv6_magic
>> # checksum: pass:0 fail:5 skip:0 total:5
>>
>> Note that test_ip_fast_csum and test_csum_ipv6_magic fail on all big endian
>> systems due to a bug in the test code, unrelated to this problem.
>>
>> Analysis shows that the errors are seen only if the buffer is misaligned.
>> Looking into arch/sh/lib/checksum.S, I found commit cadc4e1a2b4d2 ("sh:
>> Handle calling csum_partial with misaligned data") which seemed to be
>> related. Reverting that commit fixes the problem.
>> This suggests that something may be wrong with that commit. Alternatively,
>> of course, it may be possible that something is wrong with the qemu
>> emulation, but that seems unlikely.
>>
>> Thanks,
>> Guenter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.