brintos

brintos / linux-shallow public Read only

0
0
Text · 3.7 KiB · 279be06 Raw
212 lines · plain
1#! /bin/sh2# SPDX-License-Identifier: GPL-2.03#4# Randy Dunlap <rdunlap@infradead.org>, 20185# Thorsten Leemhuis <linux@leemhuis.info>, 20186 7usage()8{9	cat <<EOF10usage: ${0##*/}11       ${0##*/} <int>12 13Call without parameters to decode /proc/sys/kernel/tainted.14 15Call with a positive integer as parameter to decode a value you16retrieved from /proc/sys/kernel/tainted on another system.17 18EOF19}20 21if [ "$1"x != "x" ]; then22	if  [ "$1"x == "--helpx" ] || [ "$1"x == "-hx" ] ; then23		usage24		exit 125	elif  [ $1 -ge 0 ] 2>/dev/null ; then26		taint=$127	else28		echo "Error: Parameter '$1' not a positive integer. Aborting." >&229		exit 130	fi31else32	TAINTFILE="/proc/sys/kernel/tainted"33	if [ ! -r $TAINTFILE ]; then34		echo "No file: $TAINTFILE"35		exit36	fi37 38	taint=`cat $TAINTFILE`39fi40 41if [ $taint -eq 0 ]; then42	echo "Kernel not Tainted"43	exit44else45	echo "Kernel is \"tainted\" for the following reasons:"46fi47 48T=$taint49out=50 51addout() {52	out=$out$153}54 55if [ `expr $T % 2` -eq 0 ]; then56	addout "G"57else58	addout "P"59	echo " * proprietary module was loaded (#0)"60fi61 62T=`expr $T / 2`63if [ `expr $T % 2` -eq 0 ]; then64	addout " "65else66	addout "F"67	echo " * module was force loaded (#1)"68fi69 70T=`expr $T / 2`71if [ `expr $T % 2` -eq 0 ]; then72	addout " "73else74	addout "S"75	echo " * kernel running on an out of specification system (#2)"76fi77 78T=`expr $T / 2`79if [ `expr $T % 2` -eq 0 ]; then80	addout " "81else82	addout "R"83	echo " * module was force unloaded (#3)"84fi85 86T=`expr $T / 2`87if [ `expr $T % 2` -eq 0 ]; then88	addout " "89else90	addout "M"91	echo " * processor reported a Machine Check Exception (MCE) (#4)"92fi93 94T=`expr $T / 2`95if [ `expr $T % 2` -eq 0 ]; then96	addout " "97else98	addout "B"99	echo " * bad page referenced or some unexpected page flags (#5)"100fi101 102T=`expr $T / 2`103if [ `expr $T % 2` -eq 0 ]; then104	addout " "105else106	addout "U"107	echo " * taint requested by userspace application (#6)"108fi109 110T=`expr $T / 2`111if [ `expr $T % 2` -eq 0 ]; then112	addout " "113else114	addout "D"115	echo " * kernel died recently, i.e. there was an OOPS or BUG (#7)"116fi117 118T=`expr $T / 2`119if [ `expr $T % 2` -eq 0 ]; then120	addout " "121else122	addout "A"123	echo " * an ACPI table was overridden by user (#8)"124fi125 126T=`expr $T / 2`127if [ `expr $T % 2` -eq 0 ]; then128	addout " "129else130	addout "W"131	echo " * kernel issued warning (#9)"132fi133 134T=`expr $T / 2`135if [ `expr $T % 2` -eq 0 ]; then136	addout " "137else138	addout "C"139	echo " * staging driver was loaded (#10)"140fi141 142T=`expr $T / 2`143if [ `expr $T % 2` -eq 0 ]; then144	addout " "145else146	addout "I"147	echo " * workaround for bug in platform firmware applied (#11)"148fi149 150T=`expr $T / 2`151if [ `expr $T % 2` -eq 0 ]; then152	addout " "153else154	addout "O"155	echo " * externally-built ('out-of-tree') module was loaded  (#12)"156fi157 158T=`expr $T / 2`159if [ `expr $T % 2` -eq 0 ]; then160	addout " "161else162	addout "E"163	echo " * unsigned module was loaded (#13)"164fi165 166T=`expr $T / 2`167if [ `expr $T % 2` -eq 0 ]; then168	addout " "169else170	addout "L"171	echo " * soft lockup occurred (#14)"172fi173 174T=`expr $T / 2`175if [ `expr $T % 2` -eq 0 ]; then176	addout " "177else178	addout "K"179	echo " * kernel has been live patched (#15)"180fi181 182T=`expr $T / 2`183if [ `expr $T % 2` -eq 0 ]; then184	addout " "185else186	addout "X"187	echo " * auxiliary taint, defined for and used by distros (#16)"188 189fi190 191T=`expr $T / 2`192if [ `expr $T % 2` -eq 0 ]; then193	addout " "194else195	addout "T"196	echo " * kernel was built with the struct randomization plugin (#17)"197fi198 199T=`expr $T / 2`200if [ `expr $T % 2` -eq 0 ]; then201	addout " "202else203	addout "N"204	echo " * an in-kernel test (such as a KUnit test) has been run (#18)"205fi206 207echo "For a more detailed explanation of the various taint flags see"208echo " Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources"209echo " or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html"210echo "Raw taint value as int/string: $taint/'$out'"211#EOF#212