DF-4586
mmgrab() reference on the DF shim mm_struct is a no-op (mm_count is never read) and dev_priv->mm_structs is keyed by the recyclable current->mm pointer: i915_mm_struct.mm dangles after process exit and can silently alias a later process
Summary
mmgrab increments the shim's mm_count which nothing ever reads; the shim lifetime is governed by mm->refs, so the intended reference is never taken (the pairing mmdrop is #if 0'd). Wrappers dangle after process exit and the hash lookup by pointer can silently alias a recycled shim mm of a new process. Latent today: CONFIG_MMU_NOTIFIER is undefined tree-wide so every live deref is compiled out and unpriv creates fail at the stub. Make-mmgrab-real or key-by-proc fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-4586 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 1.1 KB | view raw |
Fix verification
not_testablebaseline noβ patch + rebuild βpatched clean
not_testable: hardware absent / latent
fix in finding markdown
per-fix-DF-4586
Confirmed kernel references
Detail
Exploit chain
[]
Evidence (decisive lines)
mmgrab increments the shim's mm_count which nothing ever reads (lifetime is mm->refs); the wrapper dangles after process exit and the hash keys by the recyclable pointer. Make-mmgrab-real (refs) or key-by-proc fix.
Verdict
not_run: latent-only; CONFIG_MMU_NOTIFIER undefined tree-wide so every deref is compiled out
No comments yet.