{
  "finding_id": "DF-4791",
  "title": "TTM memory-accounting shrinker unbounded recursion (ttm_shrink <-> ttm_bo_swapout) exhausts the 16KiB kernel stack",
  "verdict": "not_reproduced (guest has no DRM device; source-proven)",
  "impact_class": "local kernel stack overflow / memory corruption (DoS-class on guest-less observation)",
  "reproduce": {
    "build": "cc -O2 -Wall -o ttm_shrink_recursion ttm_shrink_recursion.c",
    "run": "./ttm_shrink_recursion 64 268435456",
    "expected": "On GPU (radeon/amdgpu) machines: kernel panic / stack-smash with repeating ttm_shrink/ttm_bo_swapout/ttm_pool_populate backtrace. On this guest: exit 2 at open(/dev/dri/card0) ENOENT."
  },
  "kernel_refs": [
    "sys/dev/drm/ttm/ttm_memory.c:517",
    "sys/dev/drm/ttm/ttm_memory.c:213",
    "sys/dev/drm/ttm/ttm_memory.c:502",
    "sys/dev/drm/ttm/ttm_bo.c:1807",
    "sys/dev/drm/ttm/ttm_bo.c:1809",
    "sys/dev/drm/ttm/ttm_bo.c:182",
    "sys/dev/drm/ttm/ttm_bo.c:344",
    "sys/dev/drm/ttm/ttm_tt.c:341",
    "sys/dev/drm/ttm/ttm_page_alloc.c:910",
    "sys/cpu/x86_64/include/param.h:126"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "ttm_shrink_recursion.c", "build.sh",
    "run.sh", "build.log", "run.log", "env.txt", "fix.diff",
    "manifest.json", "verdict.json"
  ]
}
