DF-3863 / manifest.json
{ "finding_id": "DF-3863", "title": "u32 truncation of nptes in amdgpu_vm_bo_update_mapping undersizes the update IB; amdgpu_vm_update_ptes then writes past its end (heap overflow)", "verdict": "not_reproduced", "reproduce": { "build": "cc -Wall -O2 -o va_nptes_overflow va_nptes_overflow.c (builds on guest, RC=0)", "run": "./va_nptes_overflow (needs AMD hw, default 256TB VM (gmc_v9_0.c:940) and amdgpu.vm_block_size>=16)", "expected": "PRT MAP 16TiB + UNMAP -> clear_freed -> nptes=(u32)(2^32)=0 -> tiny IB -> update_ptes emits one WRITE_PTE packet set per leaf -> IB heap overflow + WARN_ON(length_dw > ndw) at amdgpu_vm.c:1920 after the fact" }, "kernel_refs": ["sys/dev/drm/amd/amdgpu/amdgpu_vm.c:1807", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:1841", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:1879", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:1915", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:1920", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:2006", "sys/dev/drm/amd/amdgpu/amdgpu_vm.c:2333", "sys/dev/drm/amd/amdgpu/amdgpu_gem.c:604", "sys/dev/drm/amd/amdgpu/gmc_v9_0.c:940"], "artifacts": ["README.md", "VERDICT.md", "va_nptes_overflow.c", "build.sh", "run.sh", "build.log", "run.log", "env.txt", "fix.diff", "manifest.json", "verdict.json"] } |