~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/debugging/kernel-chktaint

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #! /bin/sh
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Randy Dunlap <rdunlap@infradead.org>, 2018
  5 # Thorsten Leemhuis <linux@leemhuis.info>, 2018
  6 
  7 usage()
  8 {
  9         cat <<EOF
 10 usage: ${0##*/}
 11        ${0##*/} <int>
 12 
 13 Call without parameters to decode /proc/sys/kernel/tainted.
 14 
 15 Call with a positive integer as parameter to decode a value you
 16 retrieved from /proc/sys/kernel/tainted on another system.
 17 
 18 EOF
 19 }
 20 
 21 if [ "$1"x != "x" ]; then
 22         if  [ "$1"x == "--helpx" ] || [ "$1"x == "-hx" ] ; then
 23                 usage
 24                 exit 1
 25         elif  [ $1 -ge 0 ] 2>/dev/null ; then
 26                 taint=$1
 27         else
 28                 echo "Error: Parameter '$1' not a positive integer. Aborting." >&2
 29                 exit 1
 30         fi
 31 else
 32         TAINTFILE="/proc/sys/kernel/tainted"
 33         if [ ! -r $TAINTFILE ]; then
 34                 echo "No file: $TAINTFILE"
 35                 exit
 36         fi
 37 
 38         taint=`cat $TAINTFILE`
 39 fi
 40 
 41 if [ $taint -eq 0 ]; then
 42         echo "Kernel not Tainted"
 43         exit
 44 else
 45         echo "Kernel is \"tainted\" for the following reasons:"
 46 fi
 47 
 48 T=$taint
 49 out=
 50 
 51 addout() {
 52         out=$out$1
 53 }
 54 
 55 if [ `expr $T % 2` -eq 0 ]; then
 56         addout "G"
 57 else
 58         addout "P"
 59         echo " * proprietary module was loaded (#0)"
 60 fi
 61 
 62 T=`expr $T / 2`
 63 if [ `expr $T % 2` -eq 0 ]; then
 64         addout " "
 65 else
 66         addout "F"
 67         echo " * module was force loaded (#1)"
 68 fi
 69 
 70 T=`expr $T / 2`
 71 if [ `expr $T % 2` -eq 0 ]; then
 72         addout " "
 73 else
 74         addout "S"
 75         echo " * kernel running on an out of specification system (#2)"
 76 fi
 77 
 78 T=`expr $T / 2`
 79 if [ `expr $T % 2` -eq 0 ]; then
 80         addout " "
 81 else
 82         addout "R"
 83         echo " * module was force unloaded (#3)"
 84 fi
 85 
 86 T=`expr $T / 2`
 87 if [ `expr $T % 2` -eq 0 ]; then
 88         addout " "
 89 else
 90         addout "M"
 91         echo " * processor reported a Machine Check Exception (MCE) (#4)"
 92 fi
 93 
 94 T=`expr $T / 2`
 95 if [ `expr $T % 2` -eq 0 ]; then
 96         addout " "
 97 else
 98         addout "B"
 99         echo " * bad page referenced or some unexpected page flags (#5)"
100 fi
101 
102 T=`expr $T / 2`
103 if [ `expr $T % 2` -eq 0 ]; then
104         addout " "
105 else
106         addout "U"
107         echo " * taint requested by userspace application (#6)"
108 fi
109 
110 T=`expr $T / 2`
111 if [ `expr $T % 2` -eq 0 ]; then
112         addout " "
113 else
114         addout "D"
115         echo " * kernel died recently, i.e. there was an OOPS or BUG (#7)"
116 fi
117 
118 T=`expr $T / 2`
119 if [ `expr $T % 2` -eq 0 ]; then
120         addout " "
121 else
122         addout "A"
123         echo " * an ACPI table was overridden by user (#8)"
124 fi
125 
126 T=`expr $T / 2`
127 if [ `expr $T % 2` -eq 0 ]; then
128         addout " "
129 else
130         addout "W"
131         echo " * kernel issued warning (#9)"
132 fi
133 
134 T=`expr $T / 2`
135 if [ `expr $T % 2` -eq 0 ]; then
136         addout " "
137 else
138         addout "C"
139         echo " * staging driver was loaded (#10)"
140 fi
141 
142 T=`expr $T / 2`
143 if [ `expr $T % 2` -eq 0 ]; then
144         addout " "
145 else
146         addout "I"
147         echo " * workaround for bug in platform firmware applied (#11)"
148 fi
149 
150 T=`expr $T / 2`
151 if [ `expr $T % 2` -eq 0 ]; then
152         addout " "
153 else
154         addout "O"
155         echo " * externally-built ('out-of-tree') module was loaded  (#12)"
156 fi
157 
158 T=`expr $T / 2`
159 if [ `expr $T % 2` -eq 0 ]; then
160         addout " "
161 else
162         addout "E"
163         echo " * unsigned module was loaded (#13)"
164 fi
165 
166 T=`expr $T / 2`
167 if [ `expr $T % 2` -eq 0 ]; then
168         addout " "
169 else
170         addout "L"
171         echo " * soft lockup occurred (#14)"
172 fi
173 
174 T=`expr $T / 2`
175 if [ `expr $T % 2` -eq 0 ]; then
176         addout " "
177 else
178         addout "K"
179         echo " * kernel has been live patched (#15)"
180 fi
181 
182 T=`expr $T / 2`
183 if [ `expr $T % 2` -eq 0 ]; then
184         addout " "
185 else
186         addout "X"
187         echo " * auxiliary taint, defined for and used by distros (#16)"
188 
189 fi
190 
191 T=`expr $T / 2`
192 if [ `expr $T % 2` -eq 0 ]; then
193         addout " "
194 else
195         addout "T"
196         echo " * kernel was built with the struct randomization plugin (#17)"
197 fi
198 
199 T=`expr $T / 2`
200 if [ `expr $T % 2` -eq 0 ]; then
201         addout " "
202 else
203         addout "N"
204         echo " * an in-kernel test (such as a KUnit test) has been run (#18)"
205 fi
206 
207 echo "For a more detailed explanation of the various taint flags see"
208 echo " Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources"
209 echo " or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html"
210 echo "Raw taint value as int/string: $taint/'$out'"
211 #EOF#

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php