TAINT_PROPRIETARY_MODULE=0 TAINT_FORCED_MODULE=1 TAINT_UNSAFE_SMP=2 TAINT_FORCED_RMMOD=3 TAINT_MACHINE_CHECK=4 TAINT_BAD_PAGE=5 TAINT_USER=6 TAINT_DIE=7 TAINT_OVERRIDDEN_ACPI_TABLE=8 TAINT_WARN=9 TAINT_CRAP=10 _check() { if [ $(($tainted & 1<<$1)) -ne 0 ]; then result_short="$result_short$2" result_long="$result_long * $3\n" fi } add_1tainted() { tainted=$(cat /proc/sys/kernel/tainted) if [ "$tainted" -gt 0 ]; then local result_short result_long _check $TAINT_PROPRIETARY_MODULE 'P' 'Proprietary module has been loaded.' _check $TAINT_FORCED_MODULE 'F' 'Module has been forcibly loaded.' _check $TAINT_UNSAFE_SMP 'S' 'SMP with CPUs not designed for SMP.' _check $TAINT_FORCED_RMMOD 'R' 'User forced a module unload.' _check $TAINT_MACHINE_CHECK 'M' 'System experienced a machine check exception.' _check $TAINT_BAD_PAGE 'B' 'System has hit bad_page.' _check $TAINT_USER 'U' 'Userspace-defined naughtiness.' _check $TAINT_DIE 'D' 'Kernel has oopsed before.' _check $TAINT_OVERRIDDEN_ACPI_TABLE 'A' 'ACPI table overridden.' _check $TAINT_WARN 'W' 'Taint on warning.' _check $TAINT_CRAP 'C' 'Module from drivers/staging has been loaded.' echo "** Tainted: $result_short ($tainted)" >&3 printf "$result_long" >&3 else echo '** Not tainted' >&3 fi echo >&3 } ask_1tainted() { true }