|
@@ -2487,6 +2487,9 @@ static int check_modinfo(struct module *mod, struct load_info *info)
|
|
return -ENOEXEC;
|
|
return -ENOEXEC;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (!get_modinfo(info, "intree"))
|
|
|
|
+ add_taint_module(mod, TAINT_OOT_MODULE);
|
|
|
|
+
|
|
if (get_modinfo(info, "staging")) {
|
|
if (get_modinfo(info, "staging")) {
|
|
add_taint_module(mod, TAINT_CRAP);
|
|
add_taint_module(mod, TAINT_CRAP);
|
|
printk(KERN_WARNING "%s: module is from the staging directory,"
|
|
printk(KERN_WARNING "%s: module is from the staging directory,"
|
|
@@ -2878,8 +2881,7 @@ static struct module *load_module(void __user *umod,
|
|
}
|
|
}
|
|
|
|
|
|
/* This has to be done once we're sure module name is unique. */
|
|
/* This has to be done once we're sure module name is unique. */
|
|
- if (!mod->taints || mod->taints == (1U<<TAINT_CRAP))
|
|
|
|
- dynamic_debug_setup(info.debug, info.num_debug);
|
|
|
|
|
|
+ dynamic_debug_setup(info.debug, info.num_debug);
|
|
|
|
|
|
/* Find duplicate symbols */
|
|
/* Find duplicate symbols */
|
|
err = verify_export_symbols(mod);
|
|
err = verify_export_symbols(mod);
|
|
@@ -2915,8 +2917,7 @@ static struct module *load_module(void __user *umod,
|
|
module_bug_cleanup(mod);
|
|
module_bug_cleanup(mod);
|
|
|
|
|
|
ddebug:
|
|
ddebug:
|
|
- if (!mod->taints || mod->taints == (1U<<TAINT_CRAP))
|
|
|
|
- dynamic_debug_remove(info.debug);
|
|
|
|
|
|
+ dynamic_debug_remove(info.debug);
|
|
unlock:
|
|
unlock:
|
|
mutex_unlock(&module_mutex);
|
|
mutex_unlock(&module_mutex);
|
|
synchronize_sched();
|
|
synchronize_sched();
|
|
@@ -3257,6 +3258,8 @@ static char *module_flags(struct module *mod, char *buf)
|
|
buf[bx++] = '(';
|
|
buf[bx++] = '(';
|
|
if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE))
|
|
if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE))
|
|
buf[bx++] = 'P';
|
|
buf[bx++] = 'P';
|
|
|
|
+ else if (mod->taints & (1 << TAINT_OOT_MODULE))
|
|
|
|
+ buf[bx++] = 'O';
|
|
if (mod->taints & (1 << TAINT_FORCED_MODULE))
|
|
if (mod->taints & (1 << TAINT_FORCED_MODULE))
|
|
buf[bx++] = 'F';
|
|
buf[bx++] = 'F';
|
|
if (mod->taints & (1 << TAINT_CRAP))
|
|
if (mod->taints & (1 << TAINT_CRAP))
|