49 lines · 1.0 KB · Shell
RawDownload
#!/bin/bash# SPDX-License-Identifier: GPL-2.0-or-later TIMEOUT=30 DEBUFS_DIR=`cat /proc/mounts | grep debugfs | awk '{print $2}'`if [ ! -e "$DEBUFS_DIR" ]then	echo "debugfs not found, skipping" 1>&2	exit 4fi if [ ! -e "$DEBUFS_DIR/tracing/current_tracer" ]then	echo "Tracing files not found, skipping" 1>&2	exit 4fi  echo "Testing for spurious faults when mapping kernel memory..." if grep -q "FUNCTION TRACING IS CORRUPTED" "$DEBUFS_DIR/tracing/trace"then	echo "FAILED: Ftrace already dead. Probably due to a spurious fault" 1>&2	exit 1fi dmesg -CSTART_TIME=`date +%s`END_TIME=`expr $START_TIME + $TIMEOUT`while [ `date +%s` -lt $END_TIME ]do	echo function > $DEBUFS_DIR/tracing/current_tracer	echo nop > $DEBUFS_DIR/tracing/current_tracer	if dmesg | grep -q 'ftrace bug'	then		break	fidone echo nop > $DEBUFS_DIR/tracing/current_tracerif dmesg | grep -q 'ftrace bug'then	echo "FAILED: Mapping kernel memory causes spurious faults" 1>&2	exit 1else	echo "OK: Mapping kernel memory does not cause spurious faults"	exit 0fi