| From: David Gow <davidgow@google.com> |
| Subject: module: panic: taint the kernel when selftest modules load |
| Date: Fri, 8 Jul 2022 12:48:45 +0800 |
| |
| 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"); |
| |
| Link: https://lkml.kernel.org/r/20220708044847.531566-2-davidgow@google.com |
| Signed-off-by: David Gow <davidgow@google.com> |
| Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> |
| Reviewed-by: Aaron Tomlin <atomlin@redhat.com> |
| Acked-by: Brendan Higgins <brendanhiggins@google.com> |
| Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Cc: Daniel Latypov <dlatypov@google.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Guilherme G. Piccoli <gpiccoli@igalia.com> |
| Cc: Jani Nikula <jani.nikula@linux.intel.com> |
| Cc: John Ogness <john.ogness@linutronix.de> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Kees Cook <keescook@chromium.org> |
| Cc: Lucas De Marchi <lucas.demarchi@intel.com> |
| Cc: Masahiro Yamada <masahiroy@kernel.org> |
| Cc: Michal Marek <michal.lkml@markovi.net> |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| Cc: Nick Desaulniers <ndesaulniers@google.com> |
| Cc: Sebastian Reichel <sre@kernel.org> |
| Cc: Shuah Khan <skhan@linuxfoundation.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| kernel/module/main.c | 7 +++++++ |
| scripts/mod/modpost.c | 3 +++ |
| 2 files changed, 10 insertions(+) |
| |
| --- a/kernel/module/main.c~module-panic-taint-the-kernel-when-selftest-modules-load |
| +++ a/kernel/module/main.c |
| @@ -1988,6 +1988,13 @@ static int check_modinfo(struct module * |
| /* 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("%s: loading test module taints kernel.\n", |
| + mod->name); |
| + add_taint_module(mod, TAINT_TEST, LOCKDEP_STILL_OK); |
| + } |
| + |
| return 0; |
| } |
| |
| --- a/scripts/mod/modpost.c~module-panic-taint-the-kernel-when-selftest-modules-load |
| +++ a/scripts/mod/modpost.c |
| @@ -2191,6 +2191,9 @@ static void add_header(struct buffer *b, |
| |
| 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) |
| _ |