diff mbox series

kunit: configs: Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests

Message ID 20250411095904.1593224-1-rf@opensource.cirrus.com
State New
Headers show
Series kunit: configs: Enable CONFIG_INIT_STACK_ALL_PATTERN in all_tests | expand

Commit Message

Richard Fitzgerald April 11, 2025, 9:59 a.m. UTC
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 <rf@opensource.cirrus.com>
---
 tools/testing/kunit/configs/all_tests.config | 1 +
 1 file changed, 1 insertion(+)

Comments

David Gow April 12, 2025, 6:30 a.m. UTC | #1
On Fri, 11 Apr 2025 at 17:59, Richard Fitzgerald
<rf@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 <rf@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 <davidgow@google.com>

Cheers,
-- David


>  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
>
Jakub Kicinski May 29, 2025, 3:38 p.m. UTC | #2
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 <rf@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:

$ ./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 May 30, 2025, 1:23 p.m. UTC | #3
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 <rf@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.
diff mbox series

Patch

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