{
  "finding_id": "DF-4922",
  "title": "dm_target_flakey_init failure paths leak the dm_pdev reference and permanently pin the underlying device vnode",
  "verdict": "reproduced",
  "impact": "leak",
  "kernel_refs": [
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:86",
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:96",
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:102",
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:108",
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:117",
    "sys/dev/disk/dm/flakey/dm_target_flakey.c:213",
    "sys/dev/disk/dm/dm_pdev.c:120",
    "sys/dev/disk/dm/dm_pdev.c:151",
    "sys/dev/disk/dm/dm_pdev.c:242",
    "sys/dev/disk/dm/dm_table.c:147",
    "sys/dev/disk/dm/dm_ioctl.c:783"
  ],
  "reproduce": {
    "build": "none (base-system dmsetup; kldload dm_target_flakey)",
    "run": "ssh -F dfbsd-qemu/config dfbsd 'cat > /tmp/leak_poc.sh' < leak_poc.sh && dfbsd-qemu/vm.sh run_root 'sh /tmp/leak_poc.sh'",
    "expected": "3 failed loads return 'Invalid argument'; M_DM zone 336B -> 1.08K and stays grown after dm device removal; vnconfig -u vn0/vn1/vn2 -> 'VNIOCDETACH: Device busy'; control vn3 detaches OK"
  },
  "artifacts": [
    "README.md", "VERDICT.md", "leak_poc.sh", "build.sh", "run.sh",
    "run.log", "run.noisy-first-attempt.log", "env.txt", "fix.diff",
    "manifest.json", "verdict.json"
  ]
}
