gfx sw_init partial-failure strands KIQ/MQD kernel BOs and mqd_backup allocations β teardown unreachable behind the IP-block status.sw gate
Summary
Allocation side has no unwind and the free side is gated behind a fully-successful sw_init - every bare return r in gfx_v8/v9 sw_init after kiq_init permanently pins ~9 BOs (VRAM/GTT) + 9 mqd_backup kmallocs until reboot, accumulating per probe retry. Info hygiene, hw-gated. Unwind-in-callers fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-4938 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 1.1 KB | view raw |
Fix verification
not_testableConfirmed kernel references
Detail
Exploit chain
mid-probe failure (GTT/VRAM pressure) after kiq_init -> stranded BOs/kmallocs -> accumulate per retry
Evidence (decisive lines)
findings/poc/DF-4938/ (this verdict; static call-graph proof)
Verdict
Resource-exhaustion hygiene (Info, hw-gated): the gfx sw_init allocates persistent KIQ/MQD kernel BOs (KIQ EOP, KIQ MQD in VRAM, up to 8 compute MQDs in GTT) plus mqd_backup kmallocs with NO internal unwind, and the only teardown (sw_fini) is gated behind a fully-successful sw_init by the driver core - every bare return r in gfx_v8/v9 sw_init after kiq_init succeeds permanently pins ~9 BOs + 9 kmallocs until reboot, accumulating across probe retries. No unpriv trigger, no corruption. Unwind-in-callers fix (representative gfx_v9 diff).
No comments yet.