DF-4927 / run.log
DF-4927 radeon_sa fence-borrow UAF - BASELINE (DragonFly sys/dev/drm/radeon/radeon_sa.c as-is) mode
scenario: X[0,1024)GFX/F-pending A[1024,2048)DMA/sig B[2048,3072)DMA/sig Z[3072,4096)DMA/pending; request 3500B
sa_bo_new(3500, 256):
[fence F2 refcount 0 -> kfree]
[fence F3 refcount 0 -> kfree]
[fence F1 refcount 0 -> kfree]
*** UAF-REF fence F1 (refcount=0) at radeon_sa_bo_new:352 fence_ref
*** UAF-WAIT fence F1 (refcount=1) at radeon_sa_bo_new:356 fence_wait_any
*** DOUBLE-FREE fence F1 (refcount=1) at radeon_sa_bo_new:358 fence_unref
radeon_sa_bo_new -> -513 (would block/fail)
===== RESULT =====
UAF fence_ref (sa.c:352-353): 1
UAF fence_wait (sa.c:356) : 1
double fence_free (sa.c:357-358): 1
VERDICT: UAF/double-free REPRODUCED on the ported allocator logic
baseline exit=42