Reference page — cumulative record through Wednesday, August 19, 2026 UTC. Reference pages update as the archive grows; only dated daily editions are immutable pages of record.
Linux Linux — locking/qrwlock: Fix ordering in queued_write_lock_slowpath()
AV AC PR UI S C I A CVSS EPSS %ile KEV
L L L N U H N N 5.5 .0024 14.8 —
AFFECTED
Product Versions Fixed
Linux b519b56e378ee82caf9b079b04f5db87dedc3251 – —
Linux 4.15 – 4.19.189
TIMELINE
Feb 25 Reserved by Linux
Feb 27 Published (CNA: Linux)
Aug 4 RESCORED — CVE-2021-46921 (Linux). CVSS 7.8 → 5.5 (NVD).
Description
In the Linux kernel, the following vulnerability has been resolved:
locking/qrwlock: Fix ordering in queued_write_lock_slowpath()
While this code is executed with the wait_lock held, a reader can
acquire the lock without holding wait_lock. The writer side loops
checking the value with the atomic_cond_read_acquire(), but only truly
acquires the lock when the compare-and-exchange is completed
successfully which isn’t ordered. This exposes the window between the
acquire and the cmpxchg to an A-B-A problem which allows reads
following the lock acquisition to observe values speculatively before
the write lock is truly acquired.
We've seen a problem in epoll where the reader does a xchg while
holding the read lock, but the writer can see a value change out from
under it.
Writer | Reader
--------------------------------------------------------------------------------
ep_scan_ready_list() |
|- write_lock_irq() |
|- queued_write_lock_slowpath() |
|- atomic_cond_read_acquire() |
| read_lock_irqsave(&ep->lock, flags);
--> (observes value before unlock) | chain_epi_lockless()
| | epi->next = xchg(&ep->ovflist, epi);
| | read_unlock_irqrestore(&ep->lock, flags);
| |
| atomic_cmpxchg_relaxed() |
|-- READ_ONCE(ep->ovflist); |
A core can order the read of the ovflist ahead of the
atomic_cmpxchg_relaxed(). Switching the cmpxchg to use acquire
semantics addresses this issue at which point the atomic_cond_read can
be switched to use relaxed semantics.
[peterz: use try_cmpxchg()]
Lifecycle
Complete event history — 3 events, chronological
| Date | Event | Detail |
| February 25, 2024 | Reserved | Reserved by Linux |
| February 27, 2024 | Published | Published (CNA: Linux) |
| August 4, 2026 | RESCORED | RESCORED — CVE-2021-46921 (Linux). CVSS 7.8 → 5.5 (NVD). |
Affected
Affected products and packages — 2 rows
| Vendor | Product / Package | Ecosystem | Version introduced | Fixed |
| Linux | Linux | — | b519b56e378ee82caf9b079b04f5db87dedc3251 | — |
| Linux | Linux | — | 4.15 | 4.19.189 |
About this page
This is a reference page, not a dated page of record. It assembles the complete lifecycle of CVE-2021-46921 from the CVE Program record, NVD enrichment, the CISA KEV catalog, EPSS, and OSV advisories. The box score's numbers (CVSS, EPSS, KEV status) are current as of Wednesday, August 19, 2026 UTC and are re-derived as the archive grows; only dated daily editions are immutable pages of record. The authoritative source for this identifier is cve.org.