# DF-2399 - agp as_isopen boolean vs open refcount

## Rig (agp_shim.c test2399: VERBATIM agp_open/agp_close on a fabricated
agp device with a memory allocation and AGP_ACQUIRE_USER state)
```
after openA: isopen=1 busy=1
after openB: isopen=1 busy=1        <-- second open skipped device_busy
after closeA: isopen=0 busy=0, memory list EMPTY, state released
                                        <-- while B still has it open
after closeB: isopen=0 busy=0       <-- no double-unbusy (guard), but the
                                        mismatch already happened
```
## Fixed kernel (fix.diff: refcounted as_isopen)
```
after openA: isopen=1 busy=1; after openB: isopen=2 busy=1
after closeA: isopen=1 busy=1, memory list NOT empty, state kept
after closeB: isopen=0 busy=0 (cleanup exactly once)
```