lib: move sort self-test into a separate file
PATCH 1/1 lib: move sort self-test into a separate file
The lib/sort.c file gets included in the EFI stub for use outside of the kernel address space, which now fails due to the addition of a module_init() function:
00000000 R_ARM_ABS32 test_sort_initdrivers/firmware/efi/libstub/lib-sort.stub.o: absolute symbol references not allowed in the EFI stub drivers/firmware/efi/libstub/Makefile:69: recipe for target 'drivers/firmware/efi/libstub/lib-sort.stub.o' failed
Other library tests live in a separate file, so doing the same here is an easy way to avoid the problem.
--- lib/Makefile | 1 + lib/sort.c | 44 -------------------------------------------- lib/test_sort.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 44 deletions(-) create mode 100644 lib/test_sort.c
lib/Makefile +1 -0
@@ -50,6 +50,7 @@ obj-$(CONFIG_TEST_KASAN) += test_kasan.o obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o obj-$(CONFIG_TEST_LKM) += test_module.o obj-$(CONFIG_TEST_RHASHTABLE) += test_rhashtable.o +obj-$(CONFIG_TEST_SORT) += test_sort.o obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_keys.o obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o
lib/sort.c +0 -44
47 lines not on this page · raw message
lib/test_sort.c new file +43 -0
43 lines not on this page · raw message
Signature · 1 line
2.9.0
Quoted 11 lines · Arnd Bergmann
The
lib/sort.cfile gets included in the EFI stub for use outside of the kernel address space, which now fails due to the addition of amodule_init()function:00000000
R_ARM_ABS32test_sort_initdrivers/firmware/efi/libstub/lib-sort.stub.o: absolute symbol references not allowed in the EFI stubdrivers/firmware/efi/libstub/Makefile:69: recipe for target 'drivers/firmware/efi/libstub/lib-sort.stub.o' failedOther library tests live in a separate file, so doing the same here is an easy way to avoid the problem.
FWIW:
Quoted 125 lines
Fixes akpm-current ("lib: add CONFIG_TEST_SORT to enable self-test of sort()")Signed-off-by Arnd Bergmann <[email protected]>--- lib/Makefile | 1 + lib/sort.c | 44 -------------------------------------------- lib/test_sort.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 44 deletions(-) create mode 100644 lib/test_sort.clib/Makefile +1
-0@@ -50,6 +50,7 @@ obj-$(CONFIG_TEST_KASAN) += test_kasan.o obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o obj-$(CONFIG_TEST_LKM) += test_module.o obj-$(CONFIG_TEST_RHASHTABLE) += test_rhashtable.o +obj-$(CONFIG_TEST_SORT) += test_sort.o obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_keys.o obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.olib/sort.c +0
-44@@ -103,47 +103,3 @@ void sort(void *base, size_t num, size_t size, }EXPORT_SYMBOL (sort); - -#ifdef CONFIG_TEST_SORT -#include <linux/slab.h> -#include <linux/module.h> -/* a simple boot-time regression test */ - -#define TEST_LEN 1000 - -static int __init cmpint (const void *a,const void *b) -{ -return *(int *)a - *(int *)b; -} - -static int __init test_sort_init (void ) -{ -int *a, i, r =1 , err = -ENOMEM ; - - a =kmalloc_array (TEST_LEN ,sizeof (*a),GFP_KERNEL ); -if (!a) -return err; - -for (i =0 ; i <TEST_LEN ; i++) { - r = (r *725861 ) %6599 ; - a[i] = r; - } - -sort (a,TEST_LEN ,sizeof (*a), cmpint,NULL ); - - err = -EINVAL ; -for (i =0 ; i <TEST_LEN -1 ; i++) -if (a[i] > a[i+1 ]) { -pr_err ("test has failed\n" ); - goto exit; - } - err =0 ; -pr_info ("test passed\n" ); -exit: -kfree (a); -return err; -} - -module_init (test_sort_init); -MODULE_LICENSE ("GPL" ); -#endif lib/test_sort.c new file +43
-1@@ -0,0 +1,43 @@ +#include <linux/sort.h> +#include <linux/slab.h> +#include <linux/module.h> + +/* a simple boot-time regression test */ + +#define TEST_LEN 1000 + +static int __init cmpint (const void *a,const void *b) +{ +return *(int *)a - *(int *)b; +} + +static int __init test_sort_init (void ) +{ +int *a, i, r =1 , err = -ENOMEM ; + + a =kmalloc_array (TEST_LEN ,sizeof (*a),GFP_KERNEL ); +if (!a) +return err; + +for (i =0 ; i <TEST_LEN ; i++) { + r = (r *725861 ) %6599 ; + a[i] = r; + } + +sort (a,TEST_LEN ,sizeof (*a), cmpint,NULL ); + + err = -EINVAL ; +for (i =0 ; i <TEST_LEN -1 ; i++) +if (a[i] > a[i+1 ]) { +pr_err ("test has failed\n" ); + goto exit; + } + err =0 ; +pr_info ("test passed\n" ); +exit: +kfree (a); +return err; +} + +module_init (test_sort_init); +MODULE_LICENSE ("GPL" ); --2.9.0
Signature · 2 lines
With Best Regards, Andy Shevchenko