lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <6d3025ed-e00d-4f8a-bab7-256cf78774af@lkcamp.dev>
Date: Tue, 24 Sep 2024 20:00:09 -0300
From: Vinicius Peixoto <vpeixoto@...amp.dev>
To: André Almeida <andrealmeid@...eup.net>
Cc: Brendan Higgins <brendan.higgins@...ux.dev>, ~lkcamp/patches@...ts.sr.ht,
 Rae Moar <rmoar@...gle.com>, David Gow <davidgow@...gle.com>,
 Andrew Morton <akpm@...ux-foundation.org>, kunit-dev@...glegroups.com,
 linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org
Subject: Re: [PATCH 0/1] Add KUnit tests for lib/crc16.c

Hi André,

On 9/24/24 6:33 PM, André Almeida wrote:
> Hey!
> 
> On 9/23/24 01:26, Vinicius Peixoto wrote:
>> Hi all,
>>
>> This patch was developed during a hackathon organized by LKCAMP [1],
>> with the objective of writing KUnit tests, both to introduce people to
>> the kernel development process and to learn about different subsystems
>> (with the positive side effect of improving the kernel test coverage, of
>> course).
>>
>> We noticed there were tests for CRC32 in lib/crc32test.c and thought it
>> would be nice to have something similar for CRC16, since it seems to be
>> widely used in network drivers (as well as in some ext4 code).
>>
>> Although this patch turned out quite big, most of the LOCs come from
>> tables containing randomly-generated test data that we use to validate
>> the kernel's implementation of CRC-16.
> Can you share how you created the tables? Given that is impossible to 
> review the table itself, at least people will be able to see how they 
> got created at least.

Yes, of course, that was an oversight on my part. I'll make sure to add 
a more detailed explanation in the cover letter/commit message for the 
next revisions. Thanks for the suggestion!

This test follows lib/crc32test.c very closely; the data table is filled 
with 4096 random bytes, and the idea is to calculate several checksums 
within it by randomly choosing a i) start offset within the data buffer, 
ii) number of bytes after the start offset and iii) input CRC.

The checksums for the randomly-generated test cases were calculated 
using a reference implementation [1] and this test compares them against 
the values yielded by the kernel's implementation.

Thanks,
Vinicius

[1] https://github.com/lammertb/libcrc/blob/master/src/crc16.c

>> We would really appreciate any feedback/suggestions on how to improve
>> this. Thanks! :-)
>>
>> Vinicius Peixoto (1):
>>    lib/crc16_kunit.c: add KUnit tests for crc16
>>
>>   lib/Kconfig.debug |   8 +
>>   lib/Makefile      |   1 +
>>   lib/crc16_kunit.c | 715 ++++++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 724 insertions(+)
>>   create mode 100644 lib/crc16_kunit.c
>>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ