aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/lib/test_modules.c
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2022-01-19 19:26:38 +0100
committerHeiko Carstens <hca@linux.ibm.com>2022-01-24 09:10:59 +0100
commit90c5318795eefa09a9f9aef8d18a904e24962b5c (patch)
treedf73e682286554977a42bc0b03eb88ff1a716357 /arch/s390/lib/test_modules.c
parents390/module: fix loading modules with a lot of relocations (diff)
downloadlinux-dev-90c5318795eefa09a9f9aef8d18a904e24962b5c.tar.xz
linux-dev-90c5318795eefa09a9f9aef8d18a904e24962b5c.zip
s390/module: test loading modules with a lot of relocations
Add a test in order to prevent regressions. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Christian Borntraeger <borntraeger@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/lib/test_modules.c')
-rw-r--r--arch/s390/lib/test_modules.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/s390/lib/test_modules.c b/arch/s390/lib/test_modules.c
new file mode 100644
index 000000000000..d056baa8fbb0
--- /dev/null
+++ b/arch/s390/lib/test_modules.c
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <kunit/test.h>
+#include <linux/module.h>
+
+#include "test_modules.h"
+
+#define DECLARE_RETURN(i) int test_modules_return_ ## i(void)
+REPEAT_10000(DECLARE_RETURN);
+
+/*
+ * Test that modules with many relocations are loaded properly.
+ */
+static void test_modules_many_vmlinux_relocs(struct kunit *test)
+{
+ int result = 0;
+
+#define CALL_RETURN(i) result += test_modules_return_ ## i()
+ REPEAT_10000(CALL_RETURN);
+ KUNIT_ASSERT_EQ(test, result, 49995000);
+}
+
+static struct kunit_case modules_testcases[] = {
+ KUNIT_CASE(test_modules_many_vmlinux_relocs),
+ {}
+};
+
+static struct kunit_suite modules_test_suite = {
+ .name = "modules_test_s390",
+ .test_cases = modules_testcases,
+};
+
+kunit_test_suites(&modules_test_suite);
+
+MODULE_LICENSE("GPL");