When doing module loading verification tests (for example, with module singing, or LSM hooks), it is very handy to have a module that can be built on all systems under test, isn't auto-loaded at boot, and has no device or similar dependencies. This creates the "test_module.ko" module for that purpose, which only reports its load and unload to printk.
Signed-off-by: Kees Cook <[email protected]> --- kernel/Makefile | 1 + kernel/test_module.c | 26 ++++++++++++++++++++++++++ lib/Kconfig.debug | 14 ++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 kernel/test_module.c diff --git a/kernel/Makefile b/kernel/Makefile index bbaf7d59c1bb..9de0f0e89937 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -59,6 +59,7 @@ obj-$(CONFIG_IKCONFIG) += configs.o obj-$(CONFIG_RESOURCE_COUNTERS) += res_counter.o obj-$(CONFIG_SMP) += stop_machine.o obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o +obj-$(CONFIG_TEST_MODULE) += test_module.o obj-$(CONFIG_AUDIT) += audit.o auditfilter.o obj-$(CONFIG_AUDITSYSCALL) += auditsc.o obj-$(CONFIG_AUDIT_WATCH) += audit_watch.o diff --git a/kernel/test_module.c b/kernel/test_module.c new file mode 100644 index 000000000000..f825589315d7 --- /dev/null +++ b/kernel/test_module.c @@ -0,0 +1,26 @@ +/* + * "hello world" kernel module + */ + +#define pr_fmt(fmt) "test_module: " fmt + +#include <linux/module.h> + +static int __init test_module_init(void) +{ + pr_info("Hello, world\n"); + + return 0; +} + +module_init(test_module_init); + +static void __exit test_module_exit(void) +{ + pr_info("Goodbye\n"); +} + +module_exit(test_module_exit); + +MODULE_AUTHOR("Kees Cook <[email protected]>"); +MODULE_LICENSE("GPL"); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index db25707aa41b..20abc92032e0 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1578,6 +1578,20 @@ config DMA_API_DEBUG This option causes a performance degredation. Use only if you want to debug device drivers. If unsure, say N. +config TEST_MODULE + tristate "Test module loading with 'hello world' module" + default n + depends on m + help + This builds the "test_module" module that emits "Hello, world" + on printk when loaded. It is designed to be used for basic + evaluation of the module loading subsystem (for example when + validating module verification). It lacks any extra dependencies, + and will not normally be loaded by the system unless explicitly + request by name. + + If unsure, say N. + source "samples/Kconfig" source "lib/Kconfig.kgdb" -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

