DF-4870 / manifest.json
{ "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" } } |