[PATCH] kunit: configs: Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests

0 views
Skip to first unread message

Richard Fitzgerald

unread,
Apr 11, 2025, 5:59:18 AM4/11/25
to brendan...@linux.dev, davi...@google.com, rm...@google.com, linux-k...@vger.kernel.org, kuni...@googlegroups.com, linux-...@vger.kernel.org, pat...@opensource.cirrus.com
Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests.config. This helps
to detect use of uninitialized local variables.

This option found an uninitialized data bug in the cs_dsp test.

Signed-off-by: Richard Fitzgerald <r...@opensource.cirrus.com>
---
tools/testing/kunit/configs/all_tests.config | 1 +
1 file changed, 1 insertion(+)

diff --git a/tools/testing/kunit/configs/all_tests.config b/tools/testing/kunit/configs/all_tests.config
index cdd9782f9646..4a60bb71fe72 100644
--- a/tools/testing/kunit/configs/all_tests.config
+++ b/tools/testing/kunit/configs/all_tests.config
@@ -10,6 +10,7 @@ CONFIG_KUNIT_EXAMPLE_TEST=y
CONFIG_KUNIT_ALL_TESTS=y

CONFIG_FORTIFY_SOURCE=y
+CONFIG_INIT_STACK_ALL_PATTERN=y

CONFIG_IIO=y

--
2.39.5

David Gow

unread,
Apr 12, 2025, 2:30:32 AM4/12/25
to Richard Fitzgerald, brendan...@linux.dev, rm...@google.com, linux-k...@vger.kernel.org, kuni...@googlegroups.com, linux-...@vger.kernel.org, pat...@opensource.cirrus.com
On Fri, 11 Apr 2025 at 17:59, Richard Fitzgerald
<r...@opensource.cirrus.com> wrote:
>
> Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests.config. This helps
> to detect use of uninitialized local variables.
>
> This option found an uninitialized data bug in the cs_dsp test.
>
> Signed-off-by: Richard Fitzgerald <r...@opensource.cirrus.com>
> ---

Hmm... for KASAN, we had a separate config fragment for picking these
sorts of things up. Then again, given we've already got stackinit
tests, we probably want this anyway, and it's clearly useful to have
it as a default.

Reviewed-by: David Gow <davi...@google.com>

Cheers,
-- David

Jakub Kicinski

unread,
May 29, 2025, 11:38:14 AM5/29/25
to Richard Fitzgerald, brendan...@linux.dev, davi...@google.com, rm...@google.com, linux-k...@vger.kernel.org, kuni...@googlegroups.com, linux-...@vger.kernel.org, pat...@opensource.cirrus.com
This breaks kunit for older compilers:

$ ./tools/testing/kunit/kunit.py run --alltests --json --arch=x86_64
Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=x86_64 O=.kunit olddefconfig
ERROR:root:Not all Kconfig options selected in kunitconfig were in the generated .config.
This is probably due to unsatisfied dependencies.
Missing: CONFIG_INIT_STACK_ALL_PATTERN=y

$ gcc --version
gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5)

IIUC GCC 11.5 is supported so pattern init can't be a hard requirement.
How about we do this instead? Can you check if it'd work for you?

diff --git a/security/Kconfig.hardening b/security/Kconfig.hardening
index c17366ce8224..904b99f34cd0 100644
--- a/security/Kconfig.hardening
+++ b/security/Kconfig.hardening
@@ -113,6 +113,7 @@ choice
bool "pattern-init everything (strongest)"
+ default KUNIT_ALL_TESTS
depends on CC_HAS_AUTO_VAR_INIT_PATTERN
depends on !KMSAN
help
Initializes everything on the stack (including padding)
with a specific debug value. This is intended to eliminate

Richard Fitzgerald

unread,
May 30, 2025, 9:23:57 AM5/30/25
to Jakub Kicinski, brendan...@linux.dev, davi...@google.com, rm...@google.com, linux-k...@vger.kernel.org, kuni...@googlegroups.com, linux-...@vger.kernel.org, pat...@opensource.cirrus.com
On 29/5/25 16:38, Jakub Kicinski wrote:
> On Fri, 11 Apr 2025 10:59:04 +0100 Richard Fitzgerald wrote:
>> Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests.config. This helps
>> to detect use of uninitialized local variables.
>>
>> This option found an uninitialized data bug in the cs_dsp test.
>>
>> Signed-off-by: Richard Fitzgerald <r...@opensource.cirrus.com>
>> ---
>> tools/testing/kunit/configs/all_tests.config | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/tools/testing/kunit/configs/all_tests.config b/tools/testing/kunit/configs/all_tests.config
>> index cdd9782f9646..4a60bb71fe72 100644
>> --- a/tools/testing/kunit/configs/all_tests.config
>> +++ b/tools/testing/kunit/configs/all_tests.config
>> @@ -10,6 +10,7 @@ CONFIG_KUNIT_EXAMPLE_TEST=y
>> CONFIG_KUNIT_ALL_TESTS=y
>>
>> CONFIG_FORTIFY_SOURCE=y
>> +CONFIG_INIT_STACK_ALL_PATTERN=y
>
> This breaks kunit for older compilers:

Drop it then.
It's not essential. Just something that showed a bug in a test so I
thought would be useful to test always. But if there are compatibility
problems it would be better not to have it in all_tests.

Reply all
Reply to author
Forward
0 new messages