]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
testsuite: depmod: check netsted loops reporting
authorYauheni Kaliuta <yauheni.kaliuta@redhat.com>
Wed, 22 Feb 2017 09:41:58 +0000 (11:41 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Wed, 22 Feb 2017 12:50:22 +0000 (04:50 -0800)
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 <yauheni.kaliuta@redhat.com>
13 files changed:
Makefile.am
testsuite/module-playground/Makefile
testsuite/module-playground/cache/mod-loop-h.ko [new file with mode: 0644]
testsuite/module-playground/cache/mod-loop-i.ko [new file with mode: 0644]
testsuite/module-playground/cache/mod-loop-j.ko [new file with mode: 0644]
testsuite/module-playground/cache/mod-loop-k.ko [new file with mode: 0644]
testsuite/module-playground/mod-loop-h.c [new file with mode: 0644]
testsuite/module-playground/mod-loop-i.c [new file with mode: 0644]
testsuite/module-playground/mod-loop-j.c [new file with mode: 0644]
testsuite/module-playground/mod-loop-k.c [new file with mode: 0644]
testsuite/module-playground/mod-loop.h
testsuite/populate-modules.sh
testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt

index 981a1afa43a72be618e5bf598a3a5f4ef20d5cb0..76262bb15c70932dd3b56f7687b5782c37f053ae 100644 (file)
@@ -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 \
index bf364a9207fa250df7134915ae80593aa1f27e8b..e6045b0dd9326b131cc54ab478c48ab0f6abae71 100644 (file)
@@ -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 (file)
index 0000000..cbd81e5
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 (file)
index 0000000..045bc4f
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 (file)
index 0000000..067aa4b
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 (file)
index 0000000..2cc16d1
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 (file)
index 0000000..6f457e2
--- /dev/null
@@ -0,0 +1,25 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/printk.h>
+
+#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 <lucas.demarchi@intel.com>");
+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 (file)
index 0000000..6456217
--- /dev/null
@@ -0,0 +1,25 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/printk.h>
+
+#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 <lucas.demarchi@intel.com>");
+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 (file)
index 0000000..facc81f
--- /dev/null
@@ -0,0 +1,26 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/printk.h>
+
+#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 <lucas.demarchi@intel.com>");
+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 (file)
index 0000000..49386cc
--- /dev/null
@@ -0,0 +1,25 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/printk.h>
+
+#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 <lucas.demarchi@intel.com>");
+MODULE_LICENSE("LGPL");
index 4da3e675a77ba86437b533ade9ab9ac8781c6cad..b9f5e82338118e0f2b9b1e05a17d99090f5c587a 100644 (file)
@@ -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);
index ba1f842d9a44cd02c8dacc16150af2d78944e525..a7e503603b9505f2b5e5aff01d16b54650a1cc8f 100755 (executable)
@@ -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"
index 01ecb894578078dfc1a07e610855bb95aad2cc22..ff28545a6344eee71f41eb5e8361dc0c857e9bc8 100644 (file)
@@ -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!