{
  "finding_id": "DF-4234",
  "status": "untested",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Source-certain Low: txp_alloc_rings() kmallocs 256 persistent swdescs whose only references live inside the DMA-shared sc_ldata block (if_txp.c:948-956); when the function later fails (fw boot-record handshake, :972-991), txp_attachs fail path runs txp_release_resources() (:326-328 -> :358-374) which frees irq/res/ldata but not the swdescs -> 4096 bytes leaked per failed attach on a half-broken card; secondary: the post-ifmedia_init bus_setup_intr failure path (:315-322) skips ifmedia_removeall(). Untested (Low, hardware-gated error path; no PoC per contract -- guest has no 3c990, run.log shared with DF-4231).",
  "exploit_chain": "",
  "evidence": "VERDICT.md (error-path trace), fix.diff (leak fix incl. detach-loop dedup to avoid double-free), run.log (driver in kernel, NO_3COM_PCI_DEVICE)",
  "kernel_refs": [
    "sys/dev/netif/txp/if_txp.c:948",
    "sys/dev/netif/txp/if_txp.c:952",
    "sys/dev/netif/txp/if_txp.c:972",
    "sys/dev/netif/txp/if_txp.c:326",
    "sys/dev/netif/txp/if_txp.c:358",
    "sys/dev/netif/txp/if_txp.c:370",
    "sys/dev/netif/txp/if_txp.c:315",
    "sys/dev/netif/txp/if_txp.c:349"
  ],
  "poc_changes": "n/a -- Low finding, PoC skipped per contract (verdict status untested).",
  "attempts": 0,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 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": 0,
  "guest_dirty": 0,
  "build_cmd": "n/a",
  "run_cmd": "n/a",
  "code_hash": "401b7281028566ee173bb088da870b02a83adc82b3f51b8adf59902b1918d135",
  "notes": "fix.diff moves the swdesc free into txp_release_resources under a sc_rxbufs NULL-guard and REMOVES txp_detachs own loop (:349-350) to avoid introducing a double-free; also drops the now-unused int i there.",
  "recommended_fix": "Free rb_sd in txp_release_resources before contigfree of sc_ldata; ifmedia_removeall on the late attach-failure path (see fix.diff).",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "Low-severity leak fix; not runtime-validable (hardware-gated error path). Diff is build-safe and dedups the detach free.",
  "fix_evidence": "fix.diff"
}