β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
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)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
baseline 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