DF-2679 / run.sh
#!/bin/sh # DF-2679 run: unprivileged reader vs privileged device-tree churn. # Terminal 1 (root): ./run.sh churn # Terminal 2 (root): ./run.sh walk (spawns walkers as unpriv user) # Expected (vulnerable kernel): Fatal trap in sysctl_devices from a walker # process, or a hard IPI-drain wedge, within # a few minutes. # Expected (fixed kernel): walkers keep running, guest stays healthy. set -e cd /tmp/df2679 case "$1" in churn) nohup sh -c 'i=0; while true; do kldload /tmp/df2679/dfrace.ko || break kldunload dfrace || break i=$((i+1)); done; echo CHURN_DONE $i' \ > /tmp/df2679/churn.log 2>&1 < /dev/null & echo "churn loop started" ;; walk) printf '#!/bin/sh\nfor i in 1 2 3 4; do\n nohup /tmp/df2679/walker >> /tmp/df2679/walker.log 2>&1 < /dev/null &\ndone\n' > /tmp/df2679/start4.sh chmod 755 /tmp/df2679/start4.sh chown testu /tmp/df2679/start4.sh /tmp/df2679/walker /tmp/df2679/walker.log su testu -c /tmp/df2679/start4.sh echo "4 unprivileged walkers started (uid of testu)" ;; esac |