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.
No comments yet.