DF-2285 / manifest.json
{ "finding_id": "DF-2285", "title": "Use-after-free in scsi_targ_bh target teardown: fixed hz/2 sleep before kfree(softc) does not drain in-flight CTIOs", "verdict": "reproduced", "reproduced": 1, "impact": "panic", "confidence": "certain", "fix_status": "fixed", "fix_summary": "active_ctios counter + wakeup drain in targbhdtor before kfree (fix.diff, A/B validated: no panic, canary intact, controls bit-identical)", "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #1 Sun Oct 18 03:32:40 UTC 2026 x86_64 (harness kernels; stock INVARIANTS config)", "code_hash": "8acf92baf610bf5dbe2c097d00ab23499a7ee807a0165afae40e1429d42f8095", "reproduce": { "build": "cd findings/poc/DF-2285/rig && ./build.sh", "run": "cd findings/poc/DF-2285/rig && ./run.sh # A/B: ./make_fix.sh && ./build.sh && ./run_fixed.sh", "expected": "baseline S2: kfree(softc) with CTIO still HELD, dtor returns after fixed 65 ticks, canary victim SAME CHUNK reclaimed, late completion (699 ticks outstanding) -> panic Bad link elm prev->next != elm from targbhdone+0x439 (panic.txt); S0/S1 controls clean; fixed kernel: completion lands with softc_freed=0, dtor drains (192 ticks), damaged_qwords=0, no panic" }, "kernel_refs": [ "sys/bus/cam/scsi/scsi_targ_bh.c:402-424", "sys/bus/cam/scsi/scsi_targ_bh.c:420-421", "sys/bus/cam/scsi/scsi_targ_bh.c:329-382", "sys/bus/cam/scsi/scsi_targ_bh.c:342", "sys/bus/cam/scsi/scsi_targ_bh.c:347-363", "sys/bus/cam/scsi/scsi_targ_bh.c:419", "sys/bus/cam/scsi/scsi_targ_bh.c:497", "sys/bus/cam/scsi/scsi_targ_bh.c:522", "sys/bus/cam/scsi/scsi_targ_bh.c:638-695", "sys/bus/cam/scsi/scsi_targ_bh.c:648", "sys/bus/cam/scsi/scsi_targ_bh.c:676-689", "sys/bus/cam/cam_periph.c:600-632", "sys/sys/queue.h:528-534", "sys/conf/files:46" ], "artifacts": [ "README.md", "VERDICT.md", "verdict.json", "manifest.json", "fix.diff", "env.txt", "patched_env.txt", "build.log", "installkernel.log", "fix_gen.log", "fix_build.log", "fix_installkernel.log", "run.log", "panic.txt", "panic.serial.log", "fix_run.log", "rig/df_pre.c", "rig/df_post.c", "rig/gen.sh", "rig/check_verbatim.sh", "rig/build.sh", "rig/run.sh", "rig/run_fixed.sh", "rig/make_fix.sh", "rig/run_reclaim.sh", "rig/run_panic.sh" ] } |