| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/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 4
- fi
- if [ ! -e "$DEBUFS_DIR/tracing/current_tracer" ]
- then
- echo "Tracing files not found, skipping" 1>&2
- exit 4
- fi
- 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 1
- fi
- dmesg -C
- START_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
- fi
- done
- echo nop > $DEBUFS_DIR/tracing/current_tracer
- if dmesg | grep -q 'ftrace bug'
- then
- echo "FAILED: Mapping kernel memory causes spurious faults" 1>&2
- exit 1
- else
- echo "OK: Mapping kernel memory does not cause spurious faults"
- exit 0
- fi
|