[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20250620112034.3395968-1-arnd@kernel.org>
Date: Fri, 20 Jun 2025 13:20:29 +0200
From: Arnd Bergmann <arnd@...nel.org>
To: Kees Cook <kees@...nel.org>,
David Gow <davidgow@...gle.com>
Cc: Arnd Bergmann <arnd@...db.de>,
"Gustavo A. R. Silva" <gustavoars@...nel.org>,
linux-hardening@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] lib/tests: split randstruct initializer tests
From: Arnd Bergmann <arnd@...db.de>
kunit code tents to cause problems with stack usage, especially when
sanitizers are enabled.
lib/tests/randstruct_kunit.c:306:1: error: the frame size of 1520 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]
Splitting up the randstruct_initializers() function into two halves
helps since each side now stays below 1KB of stack even with sanitizers
enabled.
Fixes: b370f7eacdcf ("lib/tests: Add randstruct KUnit test")
Signed-off-by: Arnd Bergmann <arnd@...db.de>
---
lib/tests/randstruct_kunit.c | 65 +++++++++++++++++++++++-------------
1 file changed, 42 insertions(+), 23 deletions(-)
diff --git a/lib/tests/randstruct_kunit.c b/lib/tests/randstruct_kunit.c
index f3a2d63c4cfb..74211e2f186f 100644
--- a/lib/tests/randstruct_kunit.c
+++ b/lib/tests/randstruct_kunit.c
@@ -249,16 +249,6 @@ static void randstruct_initializers(struct kunit *test)
struct randstruct_mixed_shuffled mixed_shuffled = {
init_members
};
- struct contains_randstruct_untouched contains_untouched = {
- .untouched = {
- init_members
- },
- };
- struct contains_randstruct_shuffled contains_shuffled = {
- .shuffled = {
- init_members
- },
- };
#define func_member(x, ignored) \
.x = func_##x,
struct randstruct_funcs_untouched funcs_untouched = {
@@ -274,6 +264,47 @@ static void randstruct_initializers(struct kunit *test)
init_members
});
+ test_check_mixed_init(test, "named", &mixed_untouched, &mixed_shuffled);
+ test_check_mixed_init(test, "unnamed", &mixed_untouched,
+ &(struct randstruct_mixed_shuffled){
+ init_members
+ });
+
+ test_check_funcs_init(test, "named", &funcs_untouched, &funcs_shuffled);
+ test_check_funcs_init(test, "unnamed", &funcs_untouched,
+ &(struct randstruct_funcs_shuffled){
+ DO_MANY_MEMBERS(func_member)
+ });
+
+#undef func_member
+#undef init_members
+}
+
+static void randstruct_contains_initializers(struct kunit *test)
+{
+#define init_members \
+ .a = 1, \
+ .b = 3, \
+ .c = 5, \
+ .d = 7, \
+ .e = 11, \
+ .f = 13, \
+ .g = 17, \
+ .h = 19,
+ struct contains_randstruct_untouched contains_untouched = {
+ .untouched = {
+ init_members
+ },
+ };
+ struct contains_randstruct_shuffled contains_shuffled = {
+ .shuffled = {
+ init_members
+ },
+ };
+ struct randstruct_shuffled shuffled = {
+ init_members
+ };
+
test_check_contained_init(test, "named", &contains_untouched, &contains_shuffled);
test_check_contained_init(test, "unnamed", &contains_untouched,
&(struct contains_randstruct_shuffled){
@@ -289,19 +320,6 @@ static void randstruct_initializers(struct kunit *test)
.shuffled = shuffled,
});
- test_check_mixed_init(test, "named", &mixed_untouched, &mixed_shuffled);
- test_check_mixed_init(test, "unnamed", &mixed_untouched,
- &(struct randstruct_mixed_shuffled){
- init_members
- });
-
- test_check_funcs_init(test, "named", &funcs_untouched, &funcs_shuffled);
- test_check_funcs_init(test, "unnamed", &funcs_untouched,
- &(struct randstruct_funcs_shuffled){
- DO_MANY_MEMBERS(func_member)
- });
-
-#undef func_member
#undef init_members
}
@@ -319,6 +337,7 @@ static struct kunit_case randstruct_test_cases[] = {
KUNIT_CASE(randstruct_layout_fptr),
KUNIT_CASE(randstruct_layout_fptr_deep),
KUNIT_CASE(randstruct_initializers),
+ KUNIT_CASE(randstruct_contains_initializers),
{}
};
--
2.39.5
Powered by blists - more mailing lists