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

acpi_dock: _EJ0 executed even when device_detach() of an _EJD-dependent child fails β€” hardware ejected out from under still-attached drivers

Summary

eject_child ignores device_detach's return and unconditionally runs _EJ0 - a child returning EBUSY (mounted disk, open tty) gets its hardware ejected while still attached (surprise-removal class, driver-dependent fault ceiling). Root-driven undock only. Abort-eject-on-failure fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
per-fix-DF-4824

Confirmed kernel references

Detail

Exploit chain

hold open a dock-provided device; sysctl hw.acpi.dock.status=0 -> _EJ0 executes despite EBUSY -> driver runs on vanished hardware

Evidence (decisive lines)

findings/poc/DF-4824/ (this verdict)

Verdict

Logic/robustness gap (no demonstrated memory corruption): acpi_dock_eject_child ignores device_detach's return and unconditionally executes _EJ0 - when a child returns EBUSY (mounted disk, open tty on the docked bus) the firmware ejects hardware out from under still-attached drivers (surprise-removal class, driver-dependent fault ceiling). Root-driven undock only; guest SSDT harness cannot force a child EBUSY deterministically. Abort-eject-on-failure fix (surface error so the state machine does not mark UNDOCKED with dependents attached).