DF-2426 / manifest.json
{ "verdict": "reproduced", "impact": "panic", "confidence": "certain", "finding_id": "DF-2426", "reproduce": { "build": "cd findings/poc/DF-2426 && ./build.sh (sha256-gated verbatim amd.c TU df_pre.c + amd.c + df_post.c compiled into X86_64_GENERIC as dev/disk/amd/dfamd_harness.c; device amd commented out of the guest config so the verbatim copy is the only instance; nativekernel, installkernel, reboot)", "run": "vm.sh up && ./run.sh (sysctl debug.df2426.control=1 -> CAM_REQ_CMP 64/32/100; sysctl debug.df2426.trigger0=1 -> Fatal trap 18 idivq in amd_action; reboot; sysctl debug.df2426.trigger_big=1 -> Fatal trap 18 divq, the XPT-filter-passing block_size=2MiB form). A/B: ./make_fixed.sh && ./run_fixed.sh", "expected": "Baseline: control returns CAM_REQ_CMP heads=64 secs=32 cylinders=100; trigger0 -> Fatal trap 18: integer divide fault while in kernel mode, Stopped at amd_action+0x16d: idivq %rsi,%eax, guest in DDB; trigger_big -> Fatal trap 18, Stopped at amd_action+0x178: divq %rsi,%eax. Fixed kernel (cam_calc_geometry): both triggers return status=0x04 CAM_REQ_CMP_ERR with heads=0 secs=0 cylinders=0, no trap, guest stays up, control unchanged." }, "kernel_refs": [ "sys/dev/disk/amd/amd.c:683", "sys/dev/disk/amd/amd.c:678", "sys/bus/cam/cam_xpt.c:3062", "sys/bus/cam/cam_xpt.c:3070", "sys/bus/cam/scsi/scsi_pass.c:474", "sys/bus/cam/scsi/scsi_da.c:2301", "sys/bus/cam/cam.c:376", "sys/dev/disk/trm/trm.c:994" ], "artifacts": [ "README.md", "VERDICT.md", "amd.fixed", "amd.fixed.sha256", "build.log", "build.sh", "build_outer.log", "df_post.c", "df_pre.c", "env.txt", "fix.diff", "fix_build.log", "fix_installkernel.log", "fix_outer.log", "gen.log", "gen.sh", "gen_fixed.log", "make_fixed.sh", "manifest.json", "panic0.txt", "panic_big.txt", "run.log", "run.sh", "run_control.log", "run_fixed.sh", "run_fixed_control.log", "run_fixed_dmesg.log", "run_fixed_trigger0.log", "run_fixed_trigger_big.log", "run_trigger0.log", "run_trigger_big.log", "verdict.json" ] } |