β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-4518

vke_stop() teardown can hang the vkernel forever: the tx cothread's done-fifo full-wait never checks the exit flag, and once the exit flag is set vke_tx_intr() refuses to drain the done fifo, so cothread_delete()'s pthread_join blocks while holding if_serializer

Summary

The done-fifo full-wait never rechecks cotd_tx_exit; once teardown sets the exit flag, tx_intr returns BEFORE its drain loop, so nothing ever drains again - cothread_delete's pthread_join blocks while ifconfig's ioctl holds if_serializer, wedging the whole vkernel. Trigger: guest-unpriv packet flood + guest-root ifconfig down. Host-facing surface verified size-exact (no host-kernel impact). Exit-aware wait + drain-before-free fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4518 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1.1 KB view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean

not_testable: no DRM device / vkernel disproportion

fix in finding markdown
per-fix-DF-4518

Confirmed kernel references

Detail

Exploit chain

[]

Evidence (decisive lines)

done-fifo full-wait never checks the exit flag and once exit is set tx_intr refuses to drain, so cothread_delete's pthread_join blocks while holding if_serializer. Exit-aware wait + drain-before-free fix.

Verdict

not_run: nested vkernel disproportionate for a Low vkernel-internal finding; logic source-complete