1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0-or-later 3 4 TIMEOUT=30 5 6 DEBUFS_DIR=`cat /proc/mounts | grep debugfs | awk '{print $2}'` 7 if [ ! -e "$DEBUFS_DIR" ] 8 then 9 echo "debugfs not found, skipping" 1>&2 10 exit 4 11 fi 12 13 if [ ! -e "$DEBUFS_DIR/tracing/current_tracer" ] 14 then 15 echo "Tracing files not found, skipping" 1>&2 16 exit 4 17 fi 18 19 20 echo "Testing for spurious faults when mapping kernel memory..." 21 22 if grep -q "FUNCTION TRACING IS CORRUPTED" "$DEBUFS_DIR/tracing/trace" 23 then 24 echo "FAILED: Ftrace already dead. Probably due to a spurious fault" 1>&2 25 exit 1 26 fi 27 28 dmesg -C 29 START_TIME=`date +%s` 30 END_TIME=`expr $START_TIME + $TIMEOUT` 31 while [ `date +%s` -lt $END_TIME ] 32 do 33 echo function > $DEBUFS_DIR/tracing/current_tracer 34 echo nop > $DEBUFS_DIR/tracing/current_tracer 35 if dmesg | grep -q 'ftrace bug' 36 then 37 break 38 fi 39 done 40 41 echo nop > $DEBUFS_DIR/tracing/current_tracer 42 if dmesg | grep -q 'ftrace bug' 43 then 44 echo "FAILED: Mapping kernel memory causes spurious faults" 1>&2 45 exit 1 46 else 47 echo "OK: Mapping kernel memory does not cause spurious faults" 48 exit 0 49 fi
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.