From: Yauheni Kaliuta Date: Wed, 22 Feb 2017 09:41:58 +0000 (+0200) Subject: testsuite: depmod: check netsted loops reporting X-Git-Tag: v24~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9be03c52ccae073745f46e857296f2c21be10e03;p=thirdparty%2Fkmod.git testsuite: depmod: check netsted loops reporting The patch adds nested loops configuration for the loop test: mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k ^ | | --------------------------- | | | ------------------------------------------- making 2 loops with common edges: mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-h mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k -> mod-loop-h The actual output for the loops is: depmod: ERROR: Cycle detected: mod_loop_h -> mod_loop_h depmod: ERROR: Cycle detected: mod_loop_i -> mod_loop_j -> mod_loop_k -> mod_loop_h -> mod_loop_i (the order in the second doesn't matter, but the first one is incorrect) Signed-off-by: Yauheni Kaliuta --- diff --git a/Makefile.am b/Makefile.am index 981a1afa..76262bb1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -287,6 +287,10 @@ EXTRA_DIST += \ testsuite/module-playground/mod-loop-e.c \ testsuite/module-playground/mod-loop-f.c \ testsuite/module-playground/mod-loop-g.c \ + testsuite/module-playground/mod-loop-h.c \ + testsuite/module-playground/mod-loop-i.c \ + testsuite/module-playground/mod-loop-j.c \ + testsuite/module-playground/mod-loop-k.c \ testsuite/module-playground/mod-loop.h \ testsuite/module-playground/mod-simple.c \ testsuite/module-playground/mod-simple-i386.ko \ diff --git a/testsuite/module-playground/Makefile b/testsuite/module-playground/Makefile index bf364a92..e6045b0d 100644 --- a/testsuite/module-playground/Makefile +++ b/testsuite/module-playground/Makefile @@ -16,6 +16,9 @@ obj-m += mod-foo.o # |-> mod-loop-f |-> mod-loop-f # \-> mod-loop-g \-> mod-loop-g # 2) mod-loop-d -> mod-loop-e -> mod-loop-d +# 3.1) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-h +# 3.2) mod-loop-h -> mod-loop-i -> mod-loop-j -> mod-loop-k -> mod-loop-h + obj-m += mod-loop-a.o obj-m += mod-loop-b.o obj-m += mod-loop-c.o @@ -23,6 +26,10 @@ obj-m += mod-loop-d.o obj-m += mod-loop-e.o obj-m += mod-loop-f.o obj-m += mod-loop-g.o +obj-m += mod-loop-h.o +obj-m += mod-loop-i.o +obj-m += mod-loop-j.o +obj-m += mod-loop-k.o # mod-fake-*: fake the respective modules in kernel with these aliases. Aliases # list was taken from 3.5.4 diff --git a/testsuite/module-playground/cache/mod-loop-h.ko b/testsuite/module-playground/cache/mod-loop-h.ko new file mode 100644 index 00000000..cbd81e59 Binary files /dev/null and b/testsuite/module-playground/cache/mod-loop-h.ko differ diff --git a/testsuite/module-playground/cache/mod-loop-i.ko b/testsuite/module-playground/cache/mod-loop-i.ko new file mode 100644 index 00000000..045bc4f5 Binary files /dev/null and b/testsuite/module-playground/cache/mod-loop-i.ko differ diff --git a/testsuite/module-playground/cache/mod-loop-j.ko b/testsuite/module-playground/cache/mod-loop-j.ko new file mode 100644 index 00000000..067aa4b9 Binary files /dev/null and b/testsuite/module-playground/cache/mod-loop-j.ko differ diff --git a/testsuite/module-playground/cache/mod-loop-k.ko b/testsuite/module-playground/cache/mod-loop-k.ko new file mode 100644 index 00000000..2cc16d1f Binary files /dev/null and b/testsuite/module-playground/cache/mod-loop-k.ko differ diff --git a/testsuite/module-playground/mod-loop-h.c b/testsuite/module-playground/mod-loop-h.c new file mode 100644 index 00000000..6f457e24 --- /dev/null +++ b/testsuite/module-playground/mod-loop-h.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printH(); + printI(); + + return 0; +} +module_init(test_module_init); + +void printH(void) +{ + pr_warn("Hello, world H\n"); +} +EXPORT_SYMBOL(printH); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-i.c b/testsuite/module-playground/mod-loop-i.c new file mode 100644 index 00000000..64562173 --- /dev/null +++ b/testsuite/module-playground/mod-loop-i.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printI(); + printJ(); + + return 0; +} +module_init(test_module_init); + +void printI(void) +{ + pr_warn("Hello, world I\n"); +} +EXPORT_SYMBOL(printI); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-j.c b/testsuite/module-playground/mod-loop-j.c new file mode 100644 index 00000000..facc81f4 --- /dev/null +++ b/testsuite/module-playground/mod-loop-j.c @@ -0,0 +1,26 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printJ(); + printH(); + printK(); + + return 0; +} +module_init(test_module_init); + +void printJ(void) +{ + pr_warn("Hello, world J\n"); +} +EXPORT_SYMBOL(printJ); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-k.c b/testsuite/module-playground/mod-loop-k.c new file mode 100644 index 00000000..49386cc5 --- /dev/null +++ b/testsuite/module-playground/mod-loop-k.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printK(); + printH(); + + return 0; +} +module_init(test_module_init); + +void printK(void) +{ + pr_warn("Hello, world K\n"); +} +EXPORT_SYMBOL(printK); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop.h b/testsuite/module-playground/mod-loop.h index 4da3e675..b9f5e823 100644 --- a/testsuite/module-playground/mod-loop.h +++ b/testsuite/module-playground/mod-loop.h @@ -7,3 +7,7 @@ void printD(void); void printE(void); void printF(void); void printG(void); +void printH(void); +void printI(void); +void printJ(void); +void printK(void); diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh index ba1f842d..a7e50360 100755 --- a/testsuite/populate-modules.sh +++ b/testsuite/populate-modules.sh @@ -18,6 +18,10 @@ map=( ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko" ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko" ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/"]="mod-foo-c.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko" diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt b/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt index 01ecb894..ff28545a 100644 --- a/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt +++ b/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt @@ -1,3 +1,5 @@ depmod: ERROR: Cycle detected: mod_loop_d -> mod_loop_e -> mod_loop_d -depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_b -depmod: ERROR: Found 5 modules in dependency cycles! +depmod: ERROR: Cycle detected: mod_loop_i -> mod_loop_j -> mod_loop_k -> mod_loop_h -> mod_loop_i +depmod: ERROR: Cycle detected: mod_loop_i -> mod_loop_j -> mod_loop_h -> mod_loop_i +depmod: ERROR: Cycle detected: mod_loop_c -> mod_loop_a -> mod_loop_b -> mod_loop_c +depmod: ERROR: Found 9 modules in dependency cycles!