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

Timeout-detection mismatch in e1000_load_firmware FW-reset wait loop

Summary

e1000_load_firmware L508 for(i=0;i<(E1000_HI_COMMAND_TIMEOUT*2);i++) runs i to 1000 on timeout. L516 if(i==E1000_HI_COMMAND_TIMEOUT) checks i against 500. Correct comparison should be if(i==(E1000_HI_COMMAND_TIMEOUT*2)). When device never asserts E1000_ICR_MNG i reaches 1000 check evaluates false function fails to detect timeout proceeds to write firmware to unresponsive device. Conversely if device responds at iteration 500 success path incorrectly flagged as failure. E1000_HI_COMMAND_TIMEOUT=500 e1000_manage.h:81. LATENT: no in-tree caller invokes e1000_load_firmware exported e1000_manage.h:50. Root-only kernel-internal HAL. Fix: if(i==(E1000_HI_COMMAND_TIMEOUT*2)).

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1889 Β· 1 files
FileTypeDescriptionSize
manifest.json file 401 B view raw

Fix verification

not_testable
baseline reproduced→ patch + rebuild →patched clean

recommended fix identified; fix.diff not authored/validated in this batch

recommended fix identified; fix.diff not authored/validated in this batch
combined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Info severity)

Evidence (decisive lines)

Source-confirmed at sys/dev/netif/ig_hal/e1000_manage.c:508: timeout-detection mismatch in FW-reset wait loop

Verified recommended fix

Source-confirmed at sys/dev/netif/ig_hal/e1000_manage.c:508: timeout-detection mismatch in FW-reset wait loop

Verdict

Source-confirmed at sys/dev/netif/ig_hal/e1000_manage.c:508: timeout-detection mismatch in FW-reset wait loop