DF-3826 / verdict.json
{ "finding_id": "DF-3826", "status": "not_reproduced", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Source-certain semaphore-symmetry defect: e1000_read_i2c_byte_generic() releases the E1000_SWFW_PHY0_SM bit once per failed retry at e1000_82575.c:3333 and then unconditionally again at :3344 (10 releases for 9 acquires), dropping a SW_FW_SYNC bit the function no longer owns and breaking the SW/FW mutual-exclusion protocol shared with management firmware and sibling ports. Proven by a 1:1 control-flow replica (run.log: acquires=9 releases=10) and by contrast with the balanced writer e1000_write_i2c_byte_generic (:3373-3417). Kernel-path reproduction impossible on the audit guest: no Intel 8257x/i350/i210 NIC is present (env.txt pciconf), so the HAL cannot attach; verdict is not_reproduced for the kernel reach with the defect itself certain at source level.", "exploit_chain": "", "evidence": "run.log (acquires=9 releases=10 -> DOUBLE RELEASE, controls balanced); VERDICT.md (control-flow trace of :3284-3344 and the write-path contrast); env.txt (no igb device on guest)", "kernel_refs": [ "sys/dev/netif/ig_hal/e1000_82575.c:3333", "sys/dev/netif/ig_hal/e1000_82575.c:3344", "sys/dev/netif/ig_hal/e1000_82575.c:3284", "sys/dev/netif/ig_hal/e1000_82575.c:3417" ], "poc_changes": "No seed existed; harness authored from scratch. Replicates the do/while(retry<10) structure verbatim with mocked acquire/release and failing I2C primitives.", "attempts": 3, "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64", "runtime_sec": 42, "guest_dirty": 0, "build_cmd": "cc -O2 -Wall -o /tmp/swfw_double_release /tmp/swfw_double_release.c", "run_cmd": "/tmp/swfw_double_release; echo exit=$?", "code_hash": "103f0b2db16ba78895c3a975bb6dcbf50e1f4285b4e234fa35bfbc71c712a228", "notes": "Guest has no igb-attachable device (virtio-only, see env.txt): the in-kernel path cannot execute. All other acquire/release pairs in the file verified balanced (nvm 991/1022, reset_hw_82580 2496/2545, phy wrappers 608/641/2376/2402). Fix-kernel rebuild not meaningful on this guest: nothing observable changes without the device.", "recommended_fix": "Gate the post-loop release on status == E1000_SUCCESS (only the break path still holds the semaphore).", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "fix.diff gates the release; validated against the same state-machine replica (releases==acquires for all cases). A patched-kernel build on this guest has no observable behavior difference because the igb device is absent, so hardware fix validation is not_testable here.", "fix_evidence": "fix.diff; VERDICT.md Fix validation section" } |