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] [thread-next>] [day] [month] [year] [list]
Message-ID: <e1b3bc91-bc89-4a6e-8f80-f9ac25b2bedb@gmx.de>
Date: Mon, 12 Jan 2026 18:59:55 +0100
From: Armin Wolf <W_Armin@....de>
To: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
Cc: Hans de Goede <hansg@...nel.org>, platform-driver-x86@...r.kernel.org,
 LKML <linux-kernel@...r.kernel.org>, linux@...ssschuh.net,
 Dell.Client.Kernel@...l.com, corbet@....net, linux-doc@...r.kernel.org
Subject: Re: [PATCH v3 4/9] platform/wmi: Add kunit test for the string
 conversion code

Am 12.01.26 um 17:34 schrieb Ilpo Järvinen:

> On Fri, 9 Jan 2026, Armin Wolf wrote:
>
>> The string conversion frunctions provided by the WMI driver core
>> have no dependencies on the remaining WMI API, making them suitable
>> for unit tests.
>>
>> Implement such a unit test using kunit. Those unit tests verify that
>> converting between WMI strings and UTF8 strings works as expected.
>> They also verify that edge cases are handled correctly.
>>
>> Signed-off-by: Armin Wolf <W_Armin@....de>
>> ---
>>   drivers/platform/wmi/tests/Kconfig        |  11 +
>>   drivers/platform/wmi/tests/Makefile       |   3 +
>>   drivers/platform/wmi/tests/string_kunit.c | 278 ++++++++++++++++++++++
>>   3 files changed, 292 insertions(+)
>>   create mode 100644 drivers/platform/wmi/tests/string_kunit.c
>>
>> diff --git a/drivers/platform/wmi/tests/Kconfig b/drivers/platform/wmi/tests/Kconfig
>> index efcbcb51c251..f7f0f3c540f5 100644
>> --- a/drivers/platform/wmi/tests/Kconfig
>> +++ b/drivers/platform/wmi/tests/Kconfig
>> @@ -14,3 +14,14 @@ config ACPI_WMI_MARSHALLING_KUNIT_TEST
>>   	  to the KUnit documentation in Documentation/dev-tools/kunit/.
>>   
>>   	  If unsure, say N.
>> +
>> +config ACPI_WMI_STRING_KUNIT_TEST
>> +	tristate "KUnit Test for ACPI-WMI string conversion" if !KUNIT_ALL_TESTS
>> +	depends on KUNIT
>> +	default KUNIT_ALL_TESTS
>> +	help
>> +	  This builds unit tests for the ACPI-WMI string conversion code.
>> +	  For more information on KUnit and unit tests in general, please refer
>> +	  to the KUnit documentation in Documentation/dev-tools/kunit/.
>> +
>> +	  If unsure, say N.
>> diff --git a/drivers/platform/wmi/tests/Makefile b/drivers/platform/wmi/tests/Makefile
>> index 252c3125353a..62c438e26259 100644
>> --- a/drivers/platform/wmi/tests/Makefile
>> +++ b/drivers/platform/wmi/tests/Makefile
>> @@ -6,3 +6,6 @@
>>   
>>   wmi_marshalling_kunit-y				:= marshalling_kunit.o
>>   obj-$(CONFIG_ACPI_WMI_MARSHALLING_KUNIT_TEST)	+= wmi_marshalling_kunit.o
>> +
>> +wmi_string_kunit-y				:= string_kunit.o
>> +obj-$(CONFIG_ACPI_WMI_STRING_KUNIT_TEST)	+= wmi_string_kunit.o
>> diff --git a/drivers/platform/wmi/tests/string_kunit.c b/drivers/platform/wmi/tests/string_kunit.c
>> new file mode 100644
>> index 000000000000..9aa3ffa85090
>> --- /dev/null
>> +++ b/drivers/platform/wmi/tests/string_kunit.c
>> @@ -0,0 +1,278 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * KUnit test for the ACPI-WMI string conversion code.
>> + *
>> + * Copyright (C) 2025 Armin Wolf <W_Armin@....de>
>> + */
>> +
>> +#include <linux/module.h>
>> +#include <linux/slab.h>
>> +#include <linux/string.h>
>> +#include <linux/wmi.h>
>> +
>> +#include <kunit/resource.h>
>> +#include <kunit/test.h>
>> +
>> +#include <asm/byteorder.h>
>> +
>> +struct wmi_string_param {
>> +	const char *name;
>> +	const struct wmi_string *wmi_string;
>> +	/*
>> +	 * Remember that using sizeof() on a struct wmi_string will
>> +	 * always return a size of two bytes due to the flexible
>> +	 * array member!
>> +	 */
>> +	size_t wmi_string_length;
>> +	const u8 *utf8_string;
>> +	size_t utf8_string_length;
>> +};
>> +
>> +#define TEST_WMI_STRING_LENGTH 12
>> +
>> +static const struct wmi_string test_wmi_string = {
>> +	.length = cpu_to_le16(10),
>> +	.chars = {
>> +		cpu_to_le16(u'T'),
> I've applied this to for-next and intend to keep these there but FYI these
> trigger sparse errors. I don't know if they're fixable or not with
> reasonable effort on kernel side.

To me it seems that sparse ignores the u-prefix signaling that the character constant
has a length of 16-bits, but good catch.

If this really is a problem then gcc would issue a warning anyway (happened when i was
using the 🐧 character which does not fit into a 16-bit character constant).

Thanks,
Armin Wolf

>
> $ sparse --version
> 0.6.4 (Debian: 0.6.4-3)
>
> --
>   i.
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ