DF-4922 / manifest.json
{ "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" ] } |