DragonFlyBSD Kernel Audit
← triage · dashboard
DF-2399

as_isopen boolean refcount mismatch causes cross-process memory wipe and device_unbusy on still-open device

Summary

sc->as_isopen is boolean flag not open-count reference counter. Two processes open /dev/agpgart second open skips device_busy. First close frees ALL AGP memory (including second process allocations) releases acquire state clears as_isopen calls device_unbusy even though second process still has device open. Causes silent loss of second process AGP memory and device_busy/device_unbusy count mismatch allowing device detach during active use. If root kldunloads agp.ko detach may proceed (busy count 0) freeing softc while fd retains dangling si_drv1 pointer -> UAF.

Discussion (0)

No comments yet.