Libor Pechacek <lpecha...@suse.com> writes: > While most of the locations where a kernel taint bit is set are accompanied > with a warning message, there are two which set their bits silently. If > the tainting module gets unloaded later on, it is almost impossible to tell > what was the reason for setting the flag. > > Signed-off-by: Libor Pechacek <lpecha...@suse.com>
Applied, thanks! Cheers, Rusty. > --- > kernel/module.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/kernel/module.c b/kernel/module.c > index 041200ca4a2d..e2d83d77a0e9 100644 > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -2812,8 +2812,12 @@ static int check_modinfo(struct module *mod, struct > load_info *info, int flags) > return -ENOEXEC; > } > > - if (!get_modinfo(info, "intree")) > + if (!get_modinfo(info, "intree")) { > + if (!test_taint(TAINT_OOT_MODULE)) > + pr_warn("%s: loading out-of-tree module taints > kernel.\n", > + mod->name); > add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK); > + } > > if (get_modinfo(info, "staging")) { > add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK); > @@ -2978,6 +2982,8 @@ static int move_module(struct module *mod, struct > load_info *info) > > static int check_module_license_and_versions(struct module *mod) > { > + int prev_taint = test_taint(TAINT_PROPRIETARY_MODULE); > + > /* > * ndiswrapper is under GPL by itself, but loads proprietary modules. > * Don't use add_taint_module(), as it would prevent ndiswrapper from > @@ -2996,6 +3002,9 @@ static int check_module_license_and_versions(struct > module *mod) > add_taint_module(mod, TAINT_PROPRIETARY_MODULE, > LOCKDEP_NOW_UNRELIABLE); > > + if (!prev_taint && test_taint(TAINT_PROPRIETARY_MODULE)) > + pr_warn("%s: module license taints kernel.\n", mod->name); > + > #ifdef CONFIG_MODVERSIONS > if ((mod->num_syms && !mod->crcs) > || (mod->num_gpl_syms && !mod->gpl_crcs) > -- > 1.7.12.4