diff options
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/kernel/module.c b/kernel/module.c index 93342d992f3..178333c48d1 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -16,7 +16,7 @@      along with this program; if not, write to the Free Software      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */ -#include <linux/module.h> +#include <linux/export.h>  #include <linux/moduleloader.h>  #include <linux/ftrace_event.h>  #include <linux/init.h> @@ -2487,6 +2487,9 @@ static int check_modinfo(struct module *mod, struct load_info *info)  		return -ENOEXEC;  	} +	if (!get_modinfo(info, "intree")) +		add_taint_module(mod, TAINT_OOT_MODULE); +  	if (get_modinfo(info, "staging")) {  		add_taint_module(mod, TAINT_CRAP);  		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. */ -	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 */  	err = verify_export_symbols(mod); @@ -2915,8 +2917,7 @@ static struct module *load_module(void __user *umod,  	module_bug_cleanup(mod);   ddebug: -	if (!mod->taints || mod->taints == (1U<<TAINT_CRAP)) -		dynamic_debug_remove(info.debug); +	dynamic_debug_remove(info.debug);   unlock:  	mutex_unlock(&module_mutex);  	synchronize_sched(); @@ -3257,6 +3258,8 @@ static char *module_flags(struct module *mod, char *buf)  		buf[bx++] = '(';  		if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE))  			buf[bx++] = 'P'; +		else if (mod->taints & (1 << TAINT_OOT_MODULE)) +			buf[bx++] = 'O';  		if (mod->taints & (1 << TAINT_FORCED_MODULE))  			buf[bx++] = 'F';  		if (mod->taints & (1 << TAINT_CRAP)) | 
