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)
PoC verification
Evidence pack
findings/poc/DF-1889 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| manifest.json | file | 401 B | view raw |
Fix verification
not_testablerecommended fix identified; fix.diff not authored/validated in this batch
recommended fix identified; fix.diff not authored/validated in this batch
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
No comments yet.