mfi_tbolt_get_cmd NULL-derefs when Thunderbolt command pool is empty
Summary
mfi_tbolt.c:784 cmd=TAILQ_FIRST; 785 TAILQ_REMOVE(cmd) NO NULL check. Empty queue -> cmd=NULL -> TAILQ_REMOVE derefs NULL->next -> panic. Callers mfi_build_and_issue_cmd (1097-1099) and mfi_build_mpt_pass_thru (817-819) test if(!cmd) but that test is DEAD CODE β panic happens first. Pool drained by heavy I/O, firmware stall, or the slot leak DF-1584. Fix: if(cmd==NULL) return NULL before TAILQ_REMOVE.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1582 Β· 4 files| File | Type | Description | Size | |
|---|---|---|---|---|
| fix.diff | suggested-fix | git-apply-able fix for the cited bug | 439 B | view raw |
| VERDICT.md | verdict | source-confirmation analysis | 708 B | β raw |
| build.sh | build-script | N/A (source-only) | 61 B | view raw |
| run.sh | run-script | N/A (source-only) | 87 B | view raw |
DF-1582 VERDICT
Verdict: REPRODUCED (source-confirmed)
Impact: Low (driver-level NULL deref / OOB / leak / DoS β hardware-gated)
Mechanism: mfi_tbolt.c:784 cmd=TAILQ_FIRST; 785 TAILQ_REMOVE(cmd) NO NULL check. Empty queue -> cmd=NULL -> TAILQ_REMOVE derefs NULL->next -> panic. Callers mfi_build_and_issue_cmd (1097-1099) and mfi_build_mpt_
Citation: sys/dev/raid/mfi/mfi_tbolt.c:784-785
Fix: Applied fix.diff β compiles in batch kernel build (rc=0, -Werror).
Verification method: Source-only line-by-line trace of cited path:line. Low-severity driver bug; PoC trigger requires specific hardware or root context. Confirmed the cited vulnerable pattern exists in source.
Fix verification
fixedfix.diff compiled in batch kernel build rc=0 -Werror
fix.diff compiled in batch kernel build rc=0 -Werror
Confirmed kernel references
β
Detail
Exploit chain
none (Low severity)
Evidence (decisive lines)
Source-confirmed: TAILQ_REMOVE on NULL cmd when pool empty (mfi_tbolt.c:784-785)
Verified recommended fix
Source-confirmed: TAILQ_REMOVE on NULL cmd when pool empty (mfi_tbolt.c:784-785)
Verdict
Source-confirmed: TAILQ_REMOVE on NULL cmd when pool empty (mfi_tbolt.c:784-785)
No comments yet.