CVE-2021-47587
CVE-2021-47587 is a critical-severity vulnerability in Linux Linux Kernel with a CVSS 3.x base score of 9.8. It is not currently listed as actively exploited by CISA, and its EPSS exploit-prediction score is low. The underlying weakness is classified as CWE-667.
Key facts
- Severity: Critical (CVSS 3.x base score 9.8)
- EPSS exploit prediction: 1% (44th percentile)
- Actively exploited: Not listed in CISA KEV
- EU (EUVD) id: EUVD-2021-34589
- Weakness: CWE-667
- Affected product: Linux Linux Kernel
- Published:
- Last modified:
Description
In the Linux kernel, the following vulnerability has been resolved: net: systemport: Add global locking for descriptor lifecycle The descriptor list is a shared resource across all of the transmit queues, and the locking mechanism used today only protects concurrency across a given transmit queue between the transmit and reclaiming. This creates an opportunity for the SYSTEMPORT hardware to work on corrupted descriptors if we have multiple producers at once which is the case when using multiple transmit queues. This was particularly noticeable when using multiple flows/transmit queues and it showed up in interesting ways in that UDP packets would get a correct UDP header checksum being calculated over an incorrect packet length. Similarly TCP packets would get an equally correct checksum computed by the hardware over an incorrect packet length. The SYSTEMPORT hardware maintains an internal descriptor list that it re-arranges when the driver produces a new descriptor anytime it writes to the WRITE_PORT_{HI,LO} registers, there is however some delay in the hardware to re-organize its descriptors and it is possible that concurrent TX queues eventually break this internal allocation scheme to the point where the length/status part of the descriptor gets used for an incorrect data buffer. The fix is to impose a global serialization for all TX queues in the short section where we are writing to the WRITE_PORT_{HI,LO} registers which solves the corruption even with multiple concurrent TX queues being used.
Frequently asked questions
- What is CVE-2021-47587?
- In the Linux kernel, the following vulnerability has been resolved: net: systemport: Add global locking for descriptor lifecycle The descriptor list is a shared resource across all of the transmit queues, and the locking mechanism used today only protects concurrency across a given transmit queue between the transmit and reclaiming. This creates an opportunity for the SYSTEMPORT hardware to work on corrupted descriptors if we have multiple producers at once which is the case when using multiple transmit queues. This was particularly noticeable when using multiple flows/transmit queues and it showed up in interesting ways in that UDP packets would get a correct UDP header checksum being calculated over an incorrect packet length. Similarly TCP packets would get an equally correct checksum computed by the hardware over an incorrect packet length. The SYSTEMPORT hardware maintains an internal descriptor list that it re-arranges when the driver produces a new descriptor anytime it writes to the WRITE_PORT_{HI,LO} registers, there is however some delay in the hardware to re-organize its descriptors and it is possible that concurrent TX queues eventually break this internal allocation scheme to the point where the length/status part of the descriptor gets used for an incorrect data buffer. The fix is to impose a global serialization for all TX queues in the short section where we are writing to the WRITE_PORT_{HI,LO} registers which solves the corruption even with multiple concurrent TX queues being used.
- How severe is CVE-2021-47587?
- CVE-2021-47587 has a CVSS 3.x base score of 9.8, rated critical severity. It is exploitable over network with low attack complexity, requires no privileges and no user interaction. Impact on confidentiality is high, integrity high, and availability high.
- Is CVE-2021-47587 being actively exploited?
- It is not currently listed in CISA's KEV catalog. Its EPSS exploit-prediction score is 1% (44th percentile), an estimate of the probability of exploitation in the next 30 days.
- What products are affected by CVE-2021-47587?
- CVE-2021-47587 primarily affects Linux Linux Kernel. In total, 6 product configurations (CPEs) are listed as vulnerable; see the affected-products list for the exact versions.
- How do I fix CVE-2021-47587?
- Review the linked vendor and NVD advisories for patched versions and mitigations, then upgrade or apply the recommended workaround. Given its critical severity, prioritise patching exposed systems.
- Does CVE-2021-47587 have an EU (EUVD) identifier?
- Yes. CVE-2021-47587 is tracked in the ENISA EU Vulnerability Database (EUVD) as EUVD-2021-34589.
- When was CVE-2021-47587 published?
- CVE-2021-47587 was published on 2024-06-19 and last updated on 2026-08-04.
References
- https://git.kernel.org/stable/c/595a684fa6f23b21958379a18cfa83862c73c2e1
- https://git.kernel.org/stable/c/6e1011cd183faae8daff275c72444edcdfe0d473
- https://git.kernel.org/stable/c/8b8e6e782456f1ce02a7ae914bbd5b1053f0b034
- https://git.kernel.org/stable/c/8ed2f5d08d6e59f8c78b2869bfb95d0be32c094c
- https://git.kernel.org/stable/c/c675256a7f131f5ba3f331efb715e8f31ea0e392
- https://git.kernel.org/stable/c/de57f62f76450b934de8203711bdc4f7953c3421
- https://git.kernel.org/stable/c/eb4687c7442942e115420a30185f8d83faf37696
- https://git.kernel.org/stable/c/f3fde37d3f0d429f0fcce214cb52588a9e21260e
Affected products (6)
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:5.16:rc1:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:5.16:rc2:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:5.16:rc3:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:5.16:rc4:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:5.16:rc5:*:*:*:*:*:*
More vulnerabilities in Linux Linux Kernel
- CVE-2026-63795 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: 9p: avoid putting oldfid in p9_client_walk() error…
- CVE-2025-38429 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: bus: mhi: ep: Update read pointer only after…
- CVE-2025-22021 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: netfilter: socket: Lookup orig tuple for IPv6…
- CVE-2025-21663 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: net: stmmac: dwmac-tegra: Read iommu stream id…
- CVE-2024-56719 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: net: stmmac: fix TSO DMA API usage causing…
- CVE-2024-44984 — Critical (CVSS 10.0): In the Linux kernel, the following vulnerability has been resolved: bnxt_en: Fix double DMA unmapping for…
All CVEs affecting Linux Linux Kernel →
Other CWE-667 (Improper Locking) vulnerabilities
- CVE-2026-53049 — Critical (CVSS 9.8): In the Linux kernel, the following vulnerability has been resolved: gfs2: add some missing log locking Function…
- CVE-2025-22077 — Critical (CVSS 9.8): In the Linux kernel, the following vulnerability has been resolved: Revert "smb: client: fix TCP timers deadlock after…
- CVE-2024-58087 — Critical (CVSS 9.8): In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix racy issue from session lookup and…
- CVE-2020-12658 — Critical (CVSS 9.8): gssproxy (aka gss-proxy) before 0.8.3 does not unlock cond_mutex before pthread exit in gp_worker_main() in…
- CVE-2019-5886 — Critical (CVSS 9.8): An issue was discovered in ShopXO 1.2.0. In the application\install\controller\Index.php file, there is no validation…
- CVE-2026-53358 — High (CVSS 8.8): In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: use chan timer to close channels…