β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-3571

Unbounded register busy-wait in re_reset() (MACFG_38/39/50-53) can hard-lock the kernel thread with the ifnet serializer held

Summary

For MACFG_38/39/50-53 the reset path spins 'while (!(CSR_READ_4(sc,RE_TXCFG) & BIT_11)) DELAY(100);' with no iteration bound, unlike the bounded 3000-iteration waits for the same bit in re_exit_oob. A wedged-but-present NIC leaves the calling thread spinning forever while holding ifp->if_serializer, hanging all subsequent ioctls on the interface. Requires faulty/errant hardware (reads of removed devices return 0xFFFFFFFF which exits the loop); no attacker-controllable input reaches the loop condition. Defense-in-depth: bound the loop like its siblings. Info hardening, Phase V skipped per contract.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-3571 Β· 1 files
FileTypeDescriptionSize
verdict.json file 525 B view raw

Confirmed kernel references

β€”

Detail

Evidence (decisive lines)

source citation re.c:7678 vs bounded siblings :3619/:3630

Verdict

Info hardening - requires a wedged-but-readable NIC; no attacker-controllable input reaches the loop condition. Phase V skipped per contract. Fix is a bounded-loop edit mirroring re_exit_oob's 3000-iteration waits.