aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index 9db11911e04b..152b1655bbac 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1806,6 +1806,7 @@ static noinline struct module *load_module(void __user *umod,
1806 Elf_Ehdr *hdr; 1806 Elf_Ehdr *hdr;
1807 Elf_Shdr *sechdrs; 1807 Elf_Shdr *sechdrs;
1808 char *secstrings, *args, *modmagic, *strtab = NULL; 1808 char *secstrings, *args, *modmagic, *strtab = NULL;
1809 char *staging;
1809 unsigned int i; 1810 unsigned int i;
1810 unsigned int symindex = 0; 1811 unsigned int symindex = 0;
1811 unsigned int strindex = 0; 1812 unsigned int strindex = 0;
@@ -1960,6 +1961,14 @@ static noinline struct module *load_module(void __user *umod,
1960 goto free_hdr; 1961 goto free_hdr;
1961 } 1962 }
1962 1963
1964 staging = get_modinfo(sechdrs, infoindex, "staging");
1965 if (staging) {
1966 add_taint_module(mod, TAINT_CRAP);
1967 printk(KERN_WARNING "%s: module is from the staging directory,"
1968 " the quality is unknown, you have been warned.\n",
1969 mod->name);
1970 }
1971
1963 /* Now copy in args */ 1972 /* Now copy in args */
1964 args = strndup_user(uargs, ~0UL >> 1); 1973 args = strndup_user(uargs, ~0UL >> 1);
1965 if (IS_ERR(args)) { 1974 if (IS_ERR(args)) {
@@ -2556,6 +2565,8 @@ static char *module_flags(struct module *mod, char *buf)
2556 buf[bx++] = 'P'; 2565 buf[bx++] = 'P';
2557 if (mod->taints & TAINT_FORCED_MODULE) 2566 if (mod->taints & TAINT_FORCED_MODULE)
2558 buf[bx++] = 'F'; 2567 buf[bx++] = 'F';
2568 if (mod->taints & TAINT_CRAP)
2569 buf[bx++] = 'C';
2559 /* 2570 /*
2560 * TAINT_FORCED_RMMOD: could be added. 2571 * TAINT_FORCED_RMMOD: could be added.
2561 * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't 2572 * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't