{
  "finding_id": "DF-4311",
  "finding": "vga_switcheroo MOD_UNLOAD/MOD_SHUTDOWN frees state and unloads while DRM modules hold live symbol references and registered clients -> use-after-unload panic / heap UAF",
  "file": "sys/dev/video/vga/vga_switcheroo.c",
  "lines": [1022, 1027],
  "verdict": "reproduced",
  "impact": "panic (root-triggered; privileged-user UAF, not unpriv escalation)",
  "confidence": "certain",
  "reproduce": {
    "build": "cd /root/uaftrig && make SYSDIR=/usr/src/sys   (guest, root)",
    "run": "kldload vga_switcheroo; kldload ./uaftrig.ko; echo trigger > /dev/uaftrig; kldunload vga_switcheroo; echo trigger-after-unload > /dev/uaftrig",
    "expected": "unpatched: Fatal trap 12 page fault, IP == fault VA inside the unloaded module text (0xffffffff82601040), guest down. patched+MODULE_DEPEND: module stays resident after kldunload, trigger returns -19/-19, no panic."
  },
  "kernel_refs": [
    "sys/dev/video/vga/vga_switcheroo.c:1022",
    "sys/dev/video/vga/vga_switcheroo.c:1024",
    "sys/dev/video/vga/vga_switcheroo.c:1026",
    "sys/kern/kern_linker.c:605",
    "sys/kern/kern_linker.c:627",
    "sys/kern/kern_linker.c:1633",
    "sys/dev/drm/drm_edid.c:1770",
    "sys/dev/drm/i915/i915_drv.c:742",
    "sys/dev/drm/amd/amdgpu/amdgpu_kms.c:950"
  ],
  "artifacts": [
    "uaftrig.c", "Makefile", "run.sh", "run.log", "panic.txt", "panic-full.log",
    "fix.log", "fix.diff", "env.txt", "README.md", "VERDICT.md", "verdict.json",
    "manifest.json"
  ],
  "fix_validated": true
}
