{
  "finding_id": "DF-4900",
  "file": "sys/dev/disk/dm/dm_dev.c",
  "title": "dm unit allocation is unbounded while the dev_t minor encoding holds only 512 units — 513th live device aliases a live minor and KKASSERT-panics dm_dev_insert deterministically (race-free); dkunit truncation also frees live devices' clone bits",
  "verdict": "reproduced",
  "impact": "panic",
  "severity": "Medium",
  "confidence": "certain",
  "reproduce": {
    "build": "none needed (base dmsetup); optional module rebuild: cd /usr/src/sys/dev/disk/dm && make",
    "run": "sh poc_phase1.sh (512 creates, no panic) then sh poc_phase2.sh (513th create panics)",
    "expected": "panic: assertion \"dmv != NULL\" failed in dm_dev_insert at /usr/src/sys/dev/disk/dm/dm_dev.c:195 (with patched dm.ko: 513th create refused cleanly, guest stays up)"
  },
  "kernel_refs": [
    "sys/dev/disk/dm/dm_dev.c:234",
    "sys/dev/disk/dm/dm_dev.c:252",
    "sys/dev/disk/dm/dm_dev.c:261",
    "sys/dev/disk/dm/dm_dev.c:191",
    "sys/dev/disk/dm/dm_dev.c:195",
    "sys/dev/disk/dm/dm_dev.c:285",
    "sys/dev/disk/dm/dm_dev.c:290",
    "sys/sys/diskslice.h:248",
    "sys/sys/diskslice.h:107",
    "sys/kern/subr_disk.c:700",
    "sys/vfs/devfs/devfs_helper.c:221"
  ],
  "artifacts": ["README.md", "VERDICT.md", "poc_phase1.sh", "poc_phase2.sh", "dm_minor_alias.sh", "fix_test.sh", "build.log", "run.log", "fix_run.log", "panic.txt", "panic.2.txt", "panic.accidental-run.txt", "fix.diff", "verdict.json", "manifest.json", "env.txt"]
}
