DragonFlyBSD Kernel Audit
DF-2633 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-2633",
  "title": "hammer2 write() silently succeeds while backend allocation fails on full PFS (ENOSPC never reaches the writer)",
  "verdict": "reproduced",
  "impact": "dos",
  "reproduce": {
    "build": "cc -O2 -o write2633 write2633.c && cc -O2 -o phase2 phase2.c && cc -O2 -o verify2633 verify2633.c",
    "run": "sh run_planD.sh",
    "expected": "stock: FILL_FSYNC rc=0 while 'xop_strategy_write: error 32' floods the console unbounded (213/s); umount EBUSY forever; crash leaves the fs empty (silent loss). fixed: FILL_FSYNC rc=-1 errno=28, retries all ENOSPC, console 1 line/s, healthy images unaffected"
  },
  "kernel_refs": [
    "sys/vfs/hammer2/hammer2_strategy.c:670-681",
    "sys/vfs/hammer2/hammer2_strategy.c:1310-1356",
    "sys/vfs/hammer2/hammer2_vnops.c:216-276",
    "sys/vfs/hammer2/hammer2_vnops.c:854-864",
    "sys/vfs/hammer2/hammer2_inode.c:1743-1767",
    "sys/vfs/hammer2/hammer2_vfsops.c:3076-3127"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "write2633.c", "phase2.c", "verify2633.c",
    "run_df2633.sh", "run_planD.sh", "validate_fix.sh", "build.sh", "run.sh",
    "stock_run.attempt1.log", "planD.log", "phase2_run2.log",
    "storm_measurements.txt", "umount_hang.attempt1.log", "postcrash_verify.log",
    "control_roundtrip.log", "control_healthy.log",
    "fix_validation.log", "fix_run.log", "fix_run_roundtrip.log",
    "build.log", "fix_build.log", "env.txt",
    "fix.diff", "verdict.json", "manifest.json"
  ]
}