From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@suse.de>,
Andreas Gruenbacher <agruen@suse.de>,
Jeff Mahoney <jeffm@suse.de>
Subject: [PATCH 01/23] Staging: add TAINT_CRAP for all drivers/staging code
Date: Fri, 10 Oct 2008 15:42:25 -0700 [thread overview]
Message-ID: <1223678567-30143-1-git-send-email-greg@kroah.com> (raw)
In-Reply-To: <20081010224130.GA30117@kroah.com>
From: Greg Kroah-Hartman <gregkh@suse.de>
We need to add a flag for all code that is in the drivers/staging/
directory to prevent all other kernel developers from worrying about
issues here, and to notify users that the drivers might not be as good
as they are normally used to.
Based on code from Andreas Gruenbacher and Jeff Mahoney to provide a
TAINT flag for the support level of a kernel module in the Novell
enterprise kernel release.
This is the kernel portion of this feature, the ability for the flag to
be set needs to be done in the build process and will happen in a
follow-up patch.
Cc: Andreas Gruenbacher <agruen@suse.de>
Cc: Jeff Mahoney <jeffm@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
Documentation/sysctl/kernel.txt | 1 +
include/linux/kernel.h | 1 +
kernel/module.c | 11 +++++++++++
kernel/panic.c | 6 ++++--
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index e1ff0d9..bde799e 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -369,4 +369,5 @@ can be ORed together:
2 - A module was force loaded by insmod -f.
Set by modutils >= 2.4.9 and module-init-tools.
4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.
+ 64 - A module from drivers/staging was loaded.
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 2651f80..b36805c 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -260,6 +260,7 @@ extern enum system_states {
#define TAINT_DIE (1<<7)
#define TAINT_OVERRIDDEN_ACPI_TABLE (1<<8)
#define TAINT_WARN (1<<9)
+#define TAINT_CRAP (1<<10)
extern void dump_stack(void) __cold;
diff --git a/kernel/module.c b/kernel/module.c
index 9db1191..152b165 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1806,6 +1806,7 @@ static noinline struct module *load_module(void __user *umod,
Elf_Ehdr *hdr;
Elf_Shdr *sechdrs;
char *secstrings, *args, *modmagic, *strtab = NULL;
+ char *staging;
unsigned int i;
unsigned int symindex = 0;
unsigned int strindex = 0;
@@ -1960,6 +1961,14 @@ static noinline struct module *load_module(void __user *umod,
goto free_hdr;
}
+ staging = get_modinfo(sechdrs, infoindex, "staging");
+ if (staging) {
+ add_taint_module(mod, TAINT_CRAP);
+ printk(KERN_WARNING "%s: module is from the staging directory,"
+ " the quality is unknown, you have been warned.\n",
+ mod->name);
+ }
+
/* Now copy in args */
args = strndup_user(uargs, ~0UL >> 1);
if (IS_ERR(args)) {
@@ -2556,6 +2565,8 @@ static char *module_flags(struct module *mod, char *buf)
buf[bx++] = 'P';
if (mod->taints & TAINT_FORCED_MODULE)
buf[bx++] = 'F';
+ if (mod->taints & TAINT_CRAP)
+ buf[bx++] = 'C';
/*
* TAINT_FORCED_RMMOD: could be added.
* TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
diff --git a/kernel/panic.c b/kernel/panic.c
index 12c5a0a..98e2047 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -155,6 +155,7 @@ EXPORT_SYMBOL(panic);
* 'U' - Userspace-defined naughtiness.
* 'A' - ACPI table overridden.
* 'W' - Taint on warning.
+ * 'C' - modules from drivers/staging are loaded.
*
* The string is overwritten by the next call to print_taint().
*/
@@ -163,7 +164,7 @@ const char *print_tainted(void)
{
static char buf[20];
if (tainted) {
- snprintf(buf, sizeof(buf), "Tainted: %c%c%c%c%c%c%c%c%c%c",
+ snprintf(buf, sizeof(buf), "Tainted: %c%c%c%c%c%c%c%c%c%c%c",
tainted & TAINT_PROPRIETARY_MODULE ? 'P' : 'G',
tainted & TAINT_FORCED_MODULE ? 'F' : ' ',
tainted & TAINT_UNSAFE_SMP ? 'S' : ' ',
@@ -173,7 +174,8 @@ const char *print_tainted(void)
tainted & TAINT_USER ? 'U' : ' ',
tainted & TAINT_DIE ? 'D' : ' ',
tainted & TAINT_OVERRIDDEN_ACPI_TABLE ? 'A' : ' ',
- tainted & TAINT_WARN ? 'W' : ' ');
+ tainted & TAINT_WARN ? 'W' : ' ',
+ tainted & TAINT_CRAP ? 'C' : ' ');
}
else
snprintf(buf, sizeof(buf), "Not tainted");
--
1.6.0.2
next prev parent reply other threads:[~2008-10-10 22:46 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-10 22:41 [GIT PATCH] STAGING patches for 2.6.28 Greg KH
2008-10-10 22:42 ` Greg KH [this message]
2008-10-10 22:42 ` [PATCH 02/23] Staging: add TAINT_CRAP flag to drivers/staging modules Greg KH
2008-10-10 22:42 ` [PATCH 03/23] Staging: add Kconfig entries and Makefile infrastructure Greg KH
2008-10-10 22:42 ` [PATCH 04/23] Staging: add MAINTAINERS entry Greg KH
2008-10-10 22:42 ` [PATCH 05/23] Staging: add et131x network driver Greg KH
2008-10-10 22:42 ` [PATCH 09/23] Staging: add me4000 pci data collection driver Greg KH
2008-10-15 8:41 ` Andrew Morton
2008-10-10 22:42 ` [PATCH 10/23] Staging: add the go7007 video driver Greg KH
2008-10-10 22:42 ` [PATCH 11/23] Staging: USB/IP: add common functions needed Greg KH
2008-10-10 22:42 ` [PATCH 12/23] Staging: USB/IP: add client driver Greg KH
2008-10-10 22:42 ` [PATCH 13/23] Staging: USB/IP: add host driver Greg KH
2008-10-10 22:42 ` [PATCH 14/23] Staging: add w35und wifi driver Greg KH
2008-10-18 20:55 ` Geert Uytterhoeven
2008-10-10 22:42 ` [PATCH 16/23] Staging: add echo cancelation module Greg KH
2008-10-10 23:08 ` Mike Frysinger
2008-10-10 23:12 ` Greg KH
2008-10-11 6:33 ` Tzafrir Cohen
2008-10-11 15:39 ` Greg KH
2008-10-11 15:39 ` Greg KH
2008-10-10 22:42 ` [PATCH 17/23] Staging: Fix gcc warnings in sxg Greg KH
2008-10-10 22:42 ` [PATCH 18/23] Staging: go7007 v4l fixes Greg KH
2008-10-10 22:42 ` [PATCH 19/23] Staging: SLICOSS: lots of checkpatch fixes Greg KH
2008-10-10 22:42 ` [PATCH 20/23] Staging: SLICOSS: Fix warnings due to static usage Greg KH
2008-10-10 22:42 ` [PATCH 21/23] Staging: SLICOSS: Fix remaining type names Greg KH
2008-10-10 22:42 ` [PATCH 22/23] Staging: SLICOSS: Call pci_release_regions at driver exit Greg KH
2008-10-10 22:42 ` [PATCH 23/23] Staging: Lindent sxg.c Greg KH
2008-10-13 21:36 ` [GIT PATCH] STAGING patches for 2.6.28 Greg KH
2008-10-13 21:38 ` [PATCH 24/25] Staging: workaround build system bug Greg KH
2008-10-13 21:38 ` [PATCH 25/25] staging: at76_usb wireless driver Greg KH
2008-10-13 21:49 ` Pavel Roskin
2008-10-13 21:51 ` Greg KH
2008-10-13 21:58 ` Pavel Roskin
2008-10-13 22:06 ` Greg KH
2008-10-17 20:34 ` [GIT PATCH] STAGING patches for 2.6.28 Linus Torvalds
2008-10-17 21:38 ` Greg KH
2008-10-17 22:00 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1223678567-30143-1-git-send-email-greg@kroah.com \
--to=greg@kroah.com \
--cc=agruen@suse.de \
--cc=gregkh@suse.de \
--cc=jeffm@suse.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox