β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-5081

mpu401_init/mpu401_uninit free the kobj without kobj_delete: parent mpu class reference never dropped, compiled kobj_ops pinned forever (unbounded refs++ on reattach)

Summary

kobj_init takes a class ref that only kobj_delete drops, but both free sites use bare kfree - refs never reaches 0, the ~2KB compiled ops table is pinned, and every attach/detach cycle grows refs. Bounded one-time leak + permanent refcount imbalance; hardware-gated (no emu10kx/cmi/emu10k1 on guest). kobj_delete fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-5081 Β· 1 files
FileTypeDescriptionSize
verdict.json file 916 B view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean
per-fix-DF-5081

Confirmed kernel references

Detail

Evidence (decisive lines)

static proof: mpu401.c:177 kobj_init vs bare kfree at :192/:205; subr_kobj.c:257-273

Verified recommended fix

kobj_delete instead of kfree at both sites

Verdict

untested (hardware-gated: no MPU-401 host on audit guest)