DF-3884
drm_dp_mst_topology_mgr_destroy/suspend never flush tx_work: pending work can run after teardown (DF-3699 family)
Summary
destroy() flushes mgr->work and destroy_connector_work but not tx_work, which kick_tx queues on system_long_wq from every HPD IRQ; suspend() likewise flushes only work/destroy_connector_work. A tx_work queued by a late HPD before teardown runs process_single_down_tx_qlock on a destroyed mgr (kfree'd payloads/proposed_vcpis + driver-private mgr memory) -> UAF. Distinct from DF-3699 (queue_work double-enqueue): a plain missing flush_work, but the file's works are also exposed to the DF-3699 pattern whenever two HPD contexts queue concurrently. Driver unload / unplug with in-flight HPD storm. Add flush_work(tx_work) fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-3884 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 341 B | view raw |
Confirmed kernel references
β
Detail
Evidence (decisive lines)
β
Verdict
Low - PoC skipped per contract (hardware-gated; race timing). Source trace in finding text; fix authored.
No comments yet.