On Sat, Jul 02, 2022 at 12:09:57PM +0800, David Gow wrote: > Taint the kernel with TAINT_TEST whenever a test module loads, by adding > a new "TEST" module property, and setting it for all modules in the > tools/testing directory. This property can also be set manually, for > tests which live outside the tools/testing directory with: > MODULE_INFO(test, "Y"); > > Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> > Signed-off-by: David Gow <davidgow@xxxxxxxxxx> > --- > kernel/module/main.c | 7 +++++++ > scripts/mod/modpost.c | 3 +++ > 2 files changed, 10 insertions(+) > > diff --git a/kernel/module/main.c b/kernel/module/main.c > index fed58d30725d..730503561eb0 100644 > --- a/kernel/module/main.c > +++ b/kernel/module/main.c > @@ -1988,6 +1988,13 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) > /* Set up license info based on the info section */ > set_license(mod, get_modinfo(info, "license")); > > + if (!get_modinfo(info, "test")) { > + if (!test_taint(TAINT_TEST)) > + pr_warn_once("%s: loading test module taints kernel.\n", > + mod->name); > + add_taint_module(mod, TAINT_TEST, LOCKDEP_STILL_OK); > + } > + > return 0; > } > > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c > index 29d5a841e215..5937212b4433 100644 > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -2191,6 +2191,9 @@ static void add_header(struct buffer *b, struct module *mod) > > if (strstarts(mod->name, "drivers/staging")) > buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n"); > + > + if (strstarts(mod->name, "tools/testing")) > + buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n"); > } > > static void add_exported_symbols(struct buffer *buf, struct module *mod) > -- > 2.37.0.rc0.161.g10f37bed90-goog > > Hi David, This change has landed in linux-next as commit e20729ede7ed ("module: panic: taint the kernel when selftest modules load") and on all of my test machines, I see this new message printed, even though as far as I am aware, I am not loading any testing modules. For example, in QEMU, I see: [ 0.596978] serio: loading test module taints kernel. and on my Honeycomb LX2, I see: [ 5.400861] fuse: loading test module taints kernel. It seems like the get_modinfo() check might be wrong? The following diff resolves it for me, I can send a formal patch if necessary (although it appears to have gone in via -mm so I assume Andrew can squash this in). Cheers, Nathan diff --git a/kernel/module/main.c b/kernel/module/main.c index 730503561eb0..4f91e41b8bc9 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -1988,7 +1988,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags) /* Set up license info based on the info section */ set_license(mod, get_modinfo(info, "license")); - if (!get_modinfo(info, "test")) { + if (get_modinfo(info, "test")) { if (!test_taint(TAINT_TEST)) pr_warn_once("%s: loading test module taints kernel.\n", mod->name);