diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-17 12:50:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-17 12:50:12 -0400 |
commit | 26e9a397774a0e94efbb8a0bf4a952c28d808cab (patch) | |
tree | fee2211b32a30c71bd22543acb791feeebd91b35 /kernel/module.c | |
parent | bdbf0ac7e187b2b757216e653e64f8b808b9077e (diff) | |
parent | 99e06e372378c5833a0c60274b645dfb2e4a4b08 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (25 commits)
staging: at76_usb wireless driver
Staging: workaround build system bug
Staging: Lindent sxg.c
Staging: SLICOSS: Call pci_release_regions at driver exit
Staging: SLICOSS: Fix remaining type names
Staging: SLICOSS: Fix warnings due to static usage
Staging: SLICOSS: lots of checkpatch fixes
Staging: go7007 v4l fixes
Staging: Fix gcc warnings in sxg
Staging: add echo cancelation module
Staging: add wlan-ng prism2 usb driver
Staging: add w35und wifi driver
Staging: USB/IP: add host driver
Staging: USB/IP: add client driver
Staging: USB/IP: add common functions needed
Staging: add the go7007 video driver
Staging: add me4000 pci data collection driver
Staging: add me4000 firmware files
Staging: add sxg network driver
Staging: add Alacritech slicoss network driver
...
Fixed up conflicts due to taint flags changes and MAINTAINERS cleanup in
MAINTAINERS, include/linux/kernel.h and kernel/panic.c.
Diffstat (limited to 'kernel/module.c')
-rw-r--r-- | kernel/module.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c index b7205f67cfaf..25bc9ac9e226 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -1834,6 +1834,7 @@ static noinline struct module *load_module(void __user *umod, | |||
1834 | Elf_Ehdr *hdr; | 1834 | Elf_Ehdr *hdr; |
1835 | Elf_Shdr *sechdrs; | 1835 | Elf_Shdr *sechdrs; |
1836 | char *secstrings, *args, *modmagic, *strtab = NULL; | 1836 | char *secstrings, *args, *modmagic, *strtab = NULL; |
1837 | char *staging; | ||
1837 | unsigned int i; | 1838 | unsigned int i; |
1838 | unsigned int symindex = 0; | 1839 | unsigned int symindex = 0; |
1839 | unsigned int strindex = 0; | 1840 | unsigned int strindex = 0; |
@@ -1989,6 +1990,14 @@ static noinline struct module *load_module(void __user *umod, | |||
1989 | goto free_hdr; | 1990 | goto free_hdr; |
1990 | } | 1991 | } |
1991 | 1992 | ||
1993 | staging = get_modinfo(sechdrs, infoindex, "staging"); | ||
1994 | if (staging) { | ||
1995 | add_taint_module(mod, TAINT_CRAP); | ||
1996 | printk(KERN_WARNING "%s: module is from the staging directory," | ||
1997 | " the quality is unknown, you have been warned.\n", | ||
1998 | mod->name); | ||
1999 | } | ||
2000 | |||
1992 | /* Now copy in args */ | 2001 | /* Now copy in args */ |
1993 | args = strndup_user(uargs, ~0UL >> 1); | 2002 | args = strndup_user(uargs, ~0UL >> 1); |
1994 | if (IS_ERR(args)) { | 2003 | if (IS_ERR(args)) { |
@@ -2587,6 +2596,8 @@ static char *module_flags(struct module *mod, char *buf) | |||
2587 | buf[bx++] = 'P'; | 2596 | buf[bx++] = 'P'; |
2588 | if (mod->taints & (1 << TAINT_FORCED_MODULE)) | 2597 | if (mod->taints & (1 << TAINT_FORCED_MODULE)) |
2589 | buf[bx++] = 'F'; | 2598 | buf[bx++] = 'F'; |
2599 | if (mod->taints & (1 << TAINT_CRAP)) | ||
2600 | buf[bx++] = 'C'; | ||
2590 | /* | 2601 | /* |
2591 | * TAINT_FORCED_RMMOD: could be added. | 2602 | * TAINT_FORCED_RMMOD: could be added. |
2592 | * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't | 2603 | * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't |