DF-4684 / manifest.json
{ "finding_id": "DF-4684", "verdict": "reproduced", "impact": "none", "title": "amdgpu_fence_wait_empty: dead dma_fence_get_rcu bail — racing reader resurrects and uses an already-released fence (double-free tail blocked by refcount_inc saturation on this port)", "reproduce": { "build": "cd /root/poc/DF-4684 && make -m /usr/share/mk KMODDIR=$PWD # df4684.ko (stock headers)", "run": "kldload drm && kldload ./df4684.ko && sysctl kern.df4684_run=1; sleep 6; dmesg | tail -15", "expected": "reader :307 dma_fence_get_rcu(...) = <ptr>, refcount resurrected to 3221225472 (REFCOUNT_SATURATED); RESULT: releases=1 frees=1 (double-free tail blocked; upstream bails at :307)" }, "kernel_refs": [ "sys/dev/drm/amd/amdgpu/amdgpu_fence.c:295-316", "sys/dev/drm/amd/amdgpu/amdgpu_fence.c:244-265", "sys/dev/drm/amd/amdgpu/amdgpu_fence.c:631-649", "sys/dev/drm/amd/amdgpu/amdgpu_pm.c:2133-2146", "sys/dev/drm/include/linux/dma-fence.h:97-103", "sys/dev/drm/include/linux/rcupdate.h:46-56", "sys/dev/drm/include/linux/refcount.h:39,53-60", "sys/dev/drm/linux_rcu.c:56-78", "sys/dev/drm/linux_fence.c:44-51" ], "artifacts": [ "df4684.c", "Makefile", "build.sh", "run.sh", "build.log", "run.log", "run.fixed.log", "fix.diff", "VERDICT.md", "README.md", "env.txt", "build_kernel.log", "verdict.json", "manifest.json" ] } |