DF-2643 / manifest.json
{ "verdict": "reproduced", "impact": "panic", "confidence": "likely", "summary": "NULL-deref panic in hammer2_xop_strategy_write when the inode cluster chain is gone, reproduced mechanically via a sanctioned harness kernel (sysctl knob forcing the exact post-race parent==NULL state admitted by hammer2_admin.c:556-563); fix (NULL guard mirroring the read xop) A/B validated on the same harness", "reproduce": { "build": "in guest /usr/src: patch -p0 < harness.diff; make -j6 nativekernel KERNCONF=X86_64_GENERIC; make installkernel; reboot (K2)", "run": "./run_panic_test.sh # mounts fresh hammer2 image rw, sysctl vfs.hammer2.df2643_harness=1, dd write + sync", "expected": "Fatal trap 12, fault virtual address 0x98, Stopped at hammer2_chain_lookup+0x92: movzbl 0x98(%rbx),%eax, all CPUs stopped, machine halted at db> (serial console)" }, "kernel_refs": [ "sys/vfs/hammer2/hammer2_strategy.c:623-626", "sys/vfs/hammer2/hammer2_strategy.c:340-364", "sys/vfs/hammer2/hammer2_strategy.c:734", "sys/vfs/hammer2/hammer2_strategy.c:760", "sys/vfs/hammer2/hammer2_chain.c:2426-2429", "sys/vfs/hammer2/hammer2_inode.c:408-428", "sys/vfs/hammer2/hammer2_admin.c:556-563", "sys/vfs/hammer2/hammer2_strategy.c:675-681" ], "artifacts": [ "harness.diff", "fix.diff", "run_panic_test.sh", "runfix_test.sh", "panic.txt", "runfix.knob-on.log", "k3build.log", "k3install.log", "env.txt", "VERDICT.md", "README.md", "manifest.json", "verdict.json" ] } |