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

Reply via email to