⬢ DragonFlyBSD Kernel Audit
DF-5790 / run5790.sh
← back to finding ↓ download raw
#!/bin/sh
# DF-5790 — softc leak when device_delete_child() deletes a
# probed-but-unattached (DS_ALIVE) device: device_detach() short-circuits
# without device_set_driver(dev,NULL), so the 8192-byte probe softc is
# never freed.  Compare M_BUS growth of leak cycles vs control cycles.
set -e
cd /root/df5789

kldload ./rig.ko

echo "=== baseline M_BUS ==="
vmstat -m | grep -w bus

echo "=== control: 100 add/delete cycles WITHOUT probe (no softc) ==="
sysctl hw.df5789.leakctl=100
vmstat -m | grep -w bus

echo "=== leak: 100 add/PROBE/delete cycles (8192-byte softc leaked each) ==="
sysctl hw.df5789.leak=100
vmstat -m | grep -w bus

echo "=== leak again x100 (cumulative) ==="
sysctl hw.df5789.leak=100
vmstat -m | grep -w bus

echo "=== unload cleanly (no dfleak devices held) ==="
sysctl hw.df5789.cooperate=1 >/dev/null 2>&1 || true
kldunload rig && echo ok
vmstat -m | grep -w bus