isp_pci_mbxdma allocations are never torn down: error paths leak the master DMA tag, and a successful attach->detach leaks pcmd_pool, xflist, tgtlist, control queues, per-channel FC scratch, per-cmd maps and all DMA tags
Summary
isp_pci_mbxdma creates the master tag and allocates pcmd_pool, xflist/tgtlist, control-space tag+memory, per-channel FC scratch, and per-cmd dma maps. Every failure path after the master-tag creation returns without bus_dma_tag_destroy, and on the success path NOTHING frees any of it: isp_uninit only resets the chip, isp_detach frees only CAM resources, isp_pci_detach frees only isp_param and pc.ptr - so a module unload (or hot-unplug) of a working adapter permanently leaks the queues, pools, scratch, maps and both DMA tags (hundreds of KB per cycle). Teardown-mirror fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-4177 Β· 2 files| File | Type | Description | Size | |
|---|---|---|---|---|
| README.md | file | 141 B | β raw | |
| verdict.json | file | 777 B | view raw |
DF-4177
Hardware-gated finding - PoC skipped per contract. Source citations in the pass-2 result block.
Fix: see pass-2 result block fix
Fix verification
not_testablesee pass-2 result block fix
source-only
Confirmed kernel references
Detail
Exploit chain
[]
Evidence (decisive lines)
source-only; full path:line trace in pass-2 result block
Verdict
source-verified; hardware-gated (no iir controller / no Qlogic HBA on audit guest)
No comments yet.