⬢ DragonFlyBSD Kernel Audit
DF-4870 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4870",
  "verdict": "untested",
  "impact": "none",
  "confidence": "certain",
  "summary": "r600_dma_ib_test fence-wait error paths return without radeon_ib_free, permanently leaking one 64KB IB-pool suballocator chunk plus the fence reference per failed test",
  "kernel_refs": [
    "sys/dev/drm/radeon/r600_dma.c:369",
    "sys/dev/drm/radeon/r600_dma.c:374",
    "sys/dev/drm/radeon/r600_dma.c:391",
    "sys/dev/drm/radeon/radeon_ib.c:73",
    "sys/dev/drm/radeon/radeon_ib.c:268",
    "sys/dev/drm/radeon/radeon_device.c:1486"
  ],
  "artifacts": ["README.md", "VERDICT.md", "fix.diff", "env.txt", "run.log", "manifest.json", "verdict.json"],
  "reproduce": {
    "build": "n/a — kernel-internal init path",
    "run": "boot DragonFly with an r6xx+ Radeon whose DMA engine is wedged so that radeon_ib_ring_tests() -> r600_dma_ib_test() fence wait fails/times out; compare RADEON_IB_POOL_SIZE pool occupancy via radeon_sa_info debugfs before/after",
    "expected": "one IB sa_bo slot (+fence ref) remains allocated after each failed DMA ib test; repeated cycles exhaust the pool; with fix.diff applied the slot is returned"
  }
}