{
  "finding_id": "DF-4760",
  "verdict": "reproduced",
  "impact": "dos",
  "confidence": "certain",
  "reproduce": {
    "build": "cc -O -o /tmp/hold_daemon /tmp/hold_daemon.c",
    "run": "kldload vinum (fresh; run NO vinum command); /tmp/hold_daemon 300 & sleep 2; kldunload vinum (observe D-state wchan vstop); vmstat -m | grep devbuf before/after; after holder closes, kldunload completes",
    "expected": "vulnerable: kldunload wedges for the entire hold (serial: 'vinum: unloaded' exactly at holder-open+hold), devbuf grows ~50 leaked struct-daemonq/s (run-4: +14,600 nodes/~350 KB permanent), kldstat blocks system-wide. patched: EBUSY after bounded ~10 s with module intact (+~1 node), clean unload after close; legit-daemon unload rc=0 in <1 s."
  },
  "kernel_refs": [
    "sys/dev/raid/vinum/vinum.c:215-219",
    "sys/dev/raid/vinum/vinum.c:302-307",
    "sys/dev/raid/vinum/vinum.c:461-462",
    "sys/dev/raid/vinum/vinum.c:544-548",
    "sys/dev/raid/vinum/vinumdaemon.c:150-162",
    "sys/dev/raid/vinum/vinumdaemon.c:215-235"
  ],
  "artifacts": [
    "hold_daemon.c", "run.sh", "run2.sh", "run3.sh", "run4.sh", "fix2_run.sh",
    "df4760_run.log", "df4760_run2.log", "df4760_run3.log", "df4760_run4.log",
    "holder4.log", "serial_5min_wedge.log", "v2_holder.log",
    "build.log", "fix_build2.log", "fix.diff", "fix_run.log", "env.txt",
    "README.md", "VERDICT.md", "verdict.json", "manifest.json"
  ]
}
