CVE-2021-47203: scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
In the Linux kernel, the following vulnerability has been resolved:
scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
When parsing the txq list in lpfc_drain_txq(), the driver attempts to pass
the requests to the adapter. If such an attempt fails, a local "fail_msg"
string is set and a log message output. The job is then added to a
completions list for cancellation.
Processing of any further jobs from the txq list continues, but since
"fail_msg" remains set, jobs are added to the completions list regardless
of whether a wqe was passed to the adapter. If successfully added to
txcmplq, jobs are added to both lists resulting in list corruption.
Fix by clearing the fail_msg string after adding a job to the completions
list. This stops the subsequent jobs from being added to the completions
list unless they had an appropriate failure.
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel driver bug in the lpfc SCSI path. Under certain transmit queue failure handling, requests can be placed on conflicting lists, corrupting kernel list state. Business impact is most likely system instability or disruption on affected Linux hosts using this driver, not proven remote compromise.
Executive priority
Treat as a targeted reliability risk for Linux storage infrastructure rather than an internet-wide emergency. Patch during normal kernel maintenance, faster for systems using lpfc storage paths or showing related kernel instability.
Technical view
The flaw is in lpfc_drain_txq(). After one adapter submission failure, fail_msg remained set, so later jobs could be added to a cancellation completions list even when successfully added to txcmplq. The upstream fix clears fail_msg after adding a failed job to the completions list.
Likely exposure
Exposure appears limited to Linux systems running affected kernel versions and using the lpfc SCSI driver code path. The CVE record lists Linux kernel versions and stable fix commits, but does not provide a complete distro-by-distro affected matrix.
Exploitation context
The supplied sources do not show active exploitation, public exploit code, or KEV listing. The described condition is driver-internal list corruption during transmit queue draining after adapter submission failure, so validation should focus on kernel version, driver use, and vendor backports.
Researcher notes
Evidence is limited to the CVE description and kernel stable commit references. No CVSS, CWE, exploitability details, or distro impact matrix is provided in the bundle. The key fix behavior is clearing fail_msg to prevent later successful jobs from being double-listed.
Mitigation direction
Apply a vendor-supported kernel update containing the referenced stable fix.
Check Linux distribution advisories for backported fixes matching CVE-2021-47203.
Prioritize hosts using lpfc-backed SCSI storage paths.
Avoid ad hoc kernel patches outside supported vendor guidance.
Validation and detection
Inventory Linux kernel versions across storage-connected hosts.
Check whether the lpfc driver is present and loaded.
Compare installed kernels against vendor advisories for CVE-2021-47203.
Review kernel logs for lpfc errors or list corruption symptoms.
Confirm patched kernels include the upstream stable fix or vendor backport.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2021-47203 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.