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)
PoC verification
Evidence pack
findings/poc/DF-4824 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 1.0 KB | view raw |
Fix verification
not_testableConfirmed 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).
No comments yet.