taint: consolidate documentation

This consolidates the taint bit documentation into a single place with
both numeric and letter values.  Additionally adds the missing TAINT_AUX
documentation.

Link: http://lkml.kernel.org/r/1519084390-43867-3-git-send-email-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Kees Cook 2018-04-10 16:32:29 -07:00 committed by Linus Torvalds
parent 47d4b263a2
commit 9c4560e5bb
2 changed files with 30 additions and 44 deletions

View File

@ -964,32 +964,33 @@ detect a hard lockup condition.
tainted: tainted:
Non-zero if the kernel has been tainted. Numeric values, which Non-zero if the kernel has been tainted. Numeric values, which can be
can be ORed together: ORed together. The letters are seen in "Tainted" line of Oops reports.
1 - A module with a non-GPL license has been loaded, this 1 (P): A module with a non-GPL license has been loaded, this
includes modules with no license. includes modules with no license.
Set by modutils >= 2.4.9 and module-init-tools. Set by modutils >= 2.4.9 and module-init-tools.
2 - A module was force loaded by insmod -f. 2 (F): A module was force loaded by insmod -f.
Set by modutils >= 2.4.9 and module-init-tools. Set by modutils >= 2.4.9 and module-init-tools.
4 - Unsafe SMP processors: SMP with CPUs not designed for SMP. 4 (S): Unsafe SMP processors: SMP with CPUs not designed for SMP.
8 - A module was forcibly unloaded from the system by rmmod -f. 8 (R): A module was forcibly unloaded from the system by rmmod -f.
16 - A hardware machine check error occurred on the system. 16 (M): A hardware machine check error occurred on the system.
32 - A bad page was discovered on the system. 32 (B): A bad page was discovered on the system.
64 - The user has asked that the system be marked "tainted". This 64 (U): The user has asked that the system be marked "tainted". This
could be because they are running software that directly modifies could be because they are running software that directly modifies
the hardware, or for other reasons. the hardware, or for other reasons.
128 - The system has died. 128 (D): The system has died.
256 - The ACPI DSDT has been overridden with one supplied by the user 256 (A): The ACPI DSDT has been overridden with one supplied by the user
instead of using the one provided by the hardware. instead of using the one provided by the hardware.
512 - A kernel warning has occurred. 512 (W): A kernel warning has occurred.
1024 - A module from drivers/staging was loaded. 1024 (C): A module from drivers/staging was loaded.
2048 - The system is working around a severe firmware bug. 2048 (I): The system is working around a severe firmware bug.
4096 - An out-of-tree module has been loaded. 4096 (O): An out-of-tree module has been loaded.
8192 - An unsigned module has been loaded in a kernel supporting module 8192 (E): An unsigned module has been loaded in a kernel supporting module
signature. signature.
16384 - A soft lockup has previously occurred on the system. 16384 (L): A soft lockup has previously occurred on the system.
32768 - The kernel has been live patched. 32768 (K): The kernel has been live patched.
65536 (X): Auxiliary taint, defined and used by for distros.
============================================================== ==============================================================

View File

@ -328,27 +328,12 @@ const struct taint_flag taint_flags[TAINT_FLAGS_COUNT] = {
}; };
/** /**
* print_tainted - return a string to represent the kernel taint state. * print_tainted - return a string to represent the kernel taint state.
* *
* 'P' - Proprietary module has been loaded. * For individual taint flag meanings, see Documentation/sysctl/kernel.txt
* 'F' - Module has been forcibly loaded.
* 'S' - SMP with CPUs not designed for SMP.
* 'R' - User forced a module unload.
* 'M' - System experienced a machine check exception.
* 'B' - System has hit bad_page.
* 'U' - Userspace-defined naughtiness.
* 'D' - Kernel has oopsed before
* 'A' - ACPI table overridden.
* 'W' - Taint on warning.
* 'C' - modules from drivers/staging are loaded.
* 'I' - Working around severe firmware bug.
* 'O' - Out-of-tree module has been loaded.
* 'E' - Unsigned module has been loaded.
* 'L' - A soft lockup has previously occurred.
* 'K' - Kernel has been live patched.
* 'X' - Auxiliary taint, for distros' use.
* *
* The string is overwritten by the next call to print_tainted(). * The string is overwritten by the next call to print_tainted(),
* but is always NULL terminated.
*/ */
const char *print_tainted(void) const char *print_tainted(void)
{ {