⬢ DragonFlyBSD Kernel Audit
DF-4927 / run.log
← back to finding ↓ download raw
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