Mauro Carvalho Chehab | 337c188 | 2016-11-07 17:03:18 -0200 | [diff] [blame] | 1 | Tainted kernels |
| 2 | --------------- |
| 3 | |
| 4 | Some oops reports contain the string **'Tainted: '** after the program |
| 5 | counter. This indicates that the kernel has been tainted by some |
| 6 | mechanism. The string is followed by a series of position-sensitive |
| 7 | characters, each representing a particular tainted value. |
| 8 | |
| 9 | 1) 'G' if all modules loaded have a GPL or compatible license, 'P' if |
| 10 | any proprietary module has been loaded. Modules without a |
| 11 | MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by |
| 12 | insmod as GPL compatible are assumed to be proprietary. |
| 13 | |
| 14 | 2) ``F`` if any module was force loaded by ``insmod -f``, ``' '`` if all |
| 15 | modules were loaded normally. |
| 16 | |
| 17 | 3) ``S`` if the oops occurred on an SMP kernel running on hardware that |
| 18 | hasn't been certified as safe to run multiprocessor. |
| 19 | Currently this occurs only on various Athlons that are not |
| 20 | SMP capable. |
| 21 | |
| 22 | 4) ``R`` if a module was force unloaded by ``rmmod -f``, ``' '`` if all |
| 23 | modules were unloaded normally. |
| 24 | |
| 25 | 5) ``M`` if any processor has reported a Machine Check Exception, |
| 26 | ``' '`` if no Machine Check Exceptions have occurred. |
| 27 | |
| 28 | 6) ``B`` if a page-release function has found a bad page reference or |
| 29 | some unexpected page flags. |
| 30 | |
| 31 | 7) ``U`` if a user or user application specifically requested that the |
| 32 | Tainted flag be set, ``' '`` otherwise. |
| 33 | |
| 34 | 8) ``D`` if the kernel has died recently, i.e. there was an OOPS or BUG. |
| 35 | |
| 36 | 9) ``A`` if the ACPI table has been overridden. |
| 37 | |
| 38 | 10) ``W`` if a warning has previously been issued by the kernel. |
| 39 | (Though some warnings may set more specific taint flags.) |
| 40 | |
| 41 | 11) ``C`` if a staging driver has been loaded. |
| 42 | |
| 43 | 12) ``I`` if the kernel is working around a severe bug in the platform |
| 44 | firmware (BIOS or similar). |
| 45 | |
| 46 | 13) ``O`` if an externally-built ("out-of-tree") module has been loaded. |
| 47 | |
| 48 | 14) ``E`` if an unsigned module has been loaded in a kernel supporting |
| 49 | module signature. |
| 50 | |
| 51 | 15) ``L`` if a soft lockup has previously occurred on the system. |
| 52 | |
| 53 | 16) ``K`` if the kernel has been live patched. |
| 54 | |
| 55 | The primary reason for the **'Tainted: '** string is to tell kernel |
| 56 | debuggers if this is a clean kernel or if anything unusual has |
| 57 | occurred. Tainting is permanent: even if an offending module is |
| 58 | unloaded, the tainted value remains to indicate that the kernel is not |
| 59 | trustworthy. |