Jan Engelhardt
17237728d7
Fix bug boo#1008186 OBS-URL: https://build.opensuse.org/request/show/441318 OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=115
168 lines
5.6 KiB
Diff
168 lines
5.6 KiB
Diff
From 965886b55ab2f80fc242c1bc7e92423c87424718 Mon Sep 17 00:00:00 2001
|
|
From: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
|
|
Date: Tue, 8 Nov 2016 17:45:49 +0100
|
|
Subject: [PATCH 1/2] testsuite: depmod: add module dependency outside cyclic
|
|
chain
|
|
|
|
Check that depmod do not report modules outside cyclic chain
|
|
|
|
Two modules f and g are added which do not have any dependency.
|
|
modules a and b are made dependent on f and g.
|
|
|
|
Here is the output of loop dependency check test after adding this
|
|
patch:
|
|
|
|
TESTSUITE: ERR: wrong:
|
|
depmod: ERROR: Found 7 modules in dependency cycles!
|
|
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: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_g
|
|
depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_f
|
|
|
|
Buffer overflow occurs in the loop when last two lines are printed.
|
|
43 bytes buffer is allocated and 53 bytes are used.
|
|
|
|
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
|
|
---
|
|
testsuite/module-playground/Makefile | 6 +++++-
|
|
testsuite/module-playground/mod-loop-a.c | 2 ++
|
|
testsuite/module-playground/mod-loop-b.c | 2 ++
|
|
testsuite/module-playground/mod-loop-f.c | 24 ++++++++++++++++++++++++
|
|
testsuite/module-playground/mod-loop-g.c | 24 ++++++++++++++++++++++++
|
|
testsuite/module-playground/mod-loop.h | 2 ++
|
|
testsuite/populate-modules.sh | 2 ++
|
|
7 files changed, 61 insertions(+), 1 deletion(-)
|
|
create mode 100644 testsuite/module-playground/mod-loop-f.c
|
|
create mode 100644 testsuite/module-playground/mod-loop-g.c
|
|
|
|
Index: kmod-23/testsuite/module-playground/Makefile
|
|
===================================================================
|
|
--- kmod-23.orig/testsuite/module-playground/Makefile
|
|
+++ kmod-23/testsuite/module-playground/Makefile
|
|
@@ -12,13 +12,17 @@ obj-m += mod-foo-c.o
|
|
obj-m += mod-foo.o
|
|
|
|
# mod-loop: create loops in dependencies:
|
|
-# 1) mod-loop-a -> mod-loop-b -> mod-loop-c -> mod-loop-a
|
|
+# 1) mod-loop-a -> mod-loop-b -> mod-loop-c -> mod-loop-a
|
|
+# |-> mod-loop-f |-> mod-loop-f
|
|
+# \-> mod-loop-g \-> mod-loop-g
|
|
# 2) mod-loop-d -> mod-loop-e -> mod-loop-d
|
|
obj-m += mod-loop-a.o
|
|
obj-m += mod-loop-b.o
|
|
obj-m += mod-loop-c.o
|
|
obj-m += mod-loop-d.o
|
|
obj-m += mod-loop-e.o
|
|
+obj-m += mod-loop-f.o
|
|
+obj-m += mod-loop-g.o
|
|
|
|
# mod-fake-*: fake the respective modules in kernel with these aliases. Aliases
|
|
# list was taken from 3.5.4
|
|
Index: kmod-23/testsuite/module-playground/mod-loop-a.c
|
|
===================================================================
|
|
--- kmod-23.orig/testsuite/module-playground/mod-loop-a.c
|
|
+++ kmod-23/testsuite/module-playground/mod-loop-a.c
|
|
@@ -10,6 +10,8 @@ static int __init test_module_init(void)
|
|
{
|
|
printA();
|
|
printB();
|
|
+ printF();
|
|
+ printG();
|
|
|
|
return 0;
|
|
}
|
|
Index: kmod-23/testsuite/module-playground/mod-loop-b.c
|
|
===================================================================
|
|
--- kmod-23.orig/testsuite/module-playground/mod-loop-b.c
|
|
+++ kmod-23/testsuite/module-playground/mod-loop-b.c
|
|
@@ -10,6 +10,8 @@ static int __init test_module_init(void)
|
|
{
|
|
printB();
|
|
printC();
|
|
+ printF();
|
|
+ printG();
|
|
|
|
return 0;
|
|
}
|
|
Index: kmod-23/testsuite/module-playground/mod-loop-f.c
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ kmod-23/testsuite/module-playground/mod-loop-f.c
|
|
@@ -0,0 +1,24 @@
|
|
+#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)
|
|
+{
|
|
+ printF();
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+module_init(test_module_init);
|
|
+
|
|
+void printF(void)
|
|
+{
|
|
+ pr_warn("Hello, world F\n");
|
|
+}
|
|
+EXPORT_SYMBOL(printF);
|
|
+
|
|
+MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
|
|
+MODULE_LICENSE("LGPL");
|
|
Index: kmod-23/testsuite/module-playground/mod-loop-g.c
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ kmod-23/testsuite/module-playground/mod-loop-g.c
|
|
@@ -0,0 +1,24 @@
|
|
+#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)
|
|
+{
|
|
+ printG();
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+module_init(test_module_init);
|
|
+
|
|
+void printG(void)
|
|
+{
|
|
+ pr_warn("Hello, world G\n");
|
|
+}
|
|
+EXPORT_SYMBOL(printG);
|
|
+
|
|
+MODULE_AUTHOR("Lucas De Marchi <lucas.demarchi@intel.com>");
|
|
+MODULE_LICENSE("LGPL");
|
|
Index: kmod-23/testsuite/module-playground/mod-loop.h
|
|
===================================================================
|
|
--- kmod-23.orig/testsuite/module-playground/mod-loop.h
|
|
+++ kmod-23/testsuite/module-playground/mod-loop.h
|
|
@@ -5,3 +5,5 @@ void printB(void);
|
|
void printC(void);
|
|
void printD(void);
|
|
void printE(void);
|
|
+void printF(void);
|
|
+void printG(void);
|
|
Index: kmod-23/testsuite/populate-modules.sh
|
|
===================================================================
|
|
--- kmod-23.orig/testsuite/populate-modules.sh
|
|
+++ kmod-23/testsuite/populate-modules.sh
|
|
@@ -16,6 +16,8 @@ map=(
|
|
["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko"
|
|
["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko"
|
|
["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-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"
|