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/ke 14 15 Call with a positive integer as parameter to d 16 retrieved from /proc/sys/kernel/tainted on ano 17 18 EOF 19 } 20 21 if [ "$1"x != "x" ]; then 22 if [ "$1"x == "--helpx" ] || [ "$1"x 23 usage 24 exit 1 25 elif [ $1 -ge 0 ] 2>/dev/null ; then 26 taint=$1 27 else 28 echo "Error: Parameter '$1' no 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 fo 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 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 s 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 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 u 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 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. th 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 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 (#1 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 platfor 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-tre 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 (# 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 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 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 str 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 205 fi 206 207 echo "For a more detailed explanation of the v 208 echo " Documentation/admin-guide/tainted-kerne 209 echo " or https://kernel.org/doc/html/latest/a 210 echo "Raw taint value as int/string: $taint/'$ 211 #EOF#
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.