#!/bin/sh
# run.sh — DF-0901 race harness run
# Two modes controlled by sysctl debug.race_holdlock:
#   0 = unlocked traversal (BUG) — expect UAF panic within seconds
#   1 = locked traversal (FIX)   — no panic, survives indefinitely
#
# Usage: ./run.sh [bug|fix]
MODE="${1:-bug}"
cd "$(dirname "$0")"

if [ "$MODE" = "fix" ]; then
    echo "=== FIX MODE: lock held during traversal (holdlock=1) ==="
    sysctl -w debug.race_holdlock=1 2>/dev/null
else
    echo "=== BUG MODE: unlocked traversal (holdlock=0) — expect panic ==="
    sysctl -w debug.race_holdlock=0 2>/dev/null
fi

kldload ./race_harness.ko 2>&1
echo "kldload rc=$?"
sleep 10
echo "SURVIVED 10s"
kldunload race_harness 2>&1
echo "kldunload rc=$?"
