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()]
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 4.15 | 4.19.189 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 5.10.38-1 | — |
| Debian 13 | linux | 5.10.38-1 | — |
| Debian 12 | linux | 5.10.38-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 24.04 LTS | linux-raspi-realtime | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv +22 | No fix yet | — |
| Ubuntu 20.04 LTS | linux | 5.4.0-74.83 | — |
| Ubuntu 20.04 LTS | linux-aws | 5.4.0-1047.49 | — |
| Ubuntu 20.04 LTS | linux-azure | 5.4.0-1048.50 | — |
| Ubuntu 20.04 LTS | linux-bluefield | 5.4.0-1012.15 | — |
| Ubuntu 20.04 LTS | linux-gcp | 5.4.0-1044.47 | — |
| Ubuntu 20.04 LTS | linux-gke +26 | No fix yet | — |
| Ubuntu 20.04 LTS | linux-gkeop | 5.4.0-1016.17 | — |
| Ubuntu 20.04 LTS | linux-kvm | 5.4.0-1040.41 | — |
| Ubuntu 20.04 LTS | linux-oracle | 5.4.0-1046.50 | — |
| Ubuntu 20.04 LTS | linux-raspi | 5.4.0-1036.39 | — |
| Ubuntu 18.04 LTS | linux | 4.15.0-144.148 | — |
| Ubuntu 18.04 LTS | linux-aws | 4.15.0-1101.108 | — |
| Ubuntu 18.04 LTS | linux-aws-5.4 | 5.4.0-1047.49~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-azure-4.15 | 4.15.0-1115.128 | — |
| Ubuntu 18.04 LTS | linux-azure-5.4 | 5.4.0-1048.50~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp-4.15 | 4.15.0-1100.113 | — |
| Ubuntu 18.04 LTS | linux-gcp-5.4 | 5.4.0-1044.47~18.04.2 | — |
| Ubuntu 18.04 LTS | linux-hwe-5.4 | 5.4.0-74.83~18.04.1 | — |
| Ubuntu 18.04 LTS | linux-kvm | 4.15.0-1092.94 | — |
| Ubuntu 18.04 LTS | linux-oracle | 4.15.0-1072.80 | — |
| Ubuntu 18.04 LTS | linux-oracle-5.4 | 5.4.0-1046.50~18.04.2 | — |
| Ubuntu 18.04 LTS | linux-raspi-5.4 | 5.4.0-1036.39~18.04.1 | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Show 6 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro FIPS 20.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS 18.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-aws-fips | 5.4.0-1069.73+fips2 | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-azure-fips | 5.4.0-1073.76+fips1 | — |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-gcp-fips | 5.4.0-1067.71~20.04.1 | — |
| Ubuntu Pro FIPS-updates 18.04 LTS | linux-aws-fips | 4.15.0-2044.46 | — |
| Ubuntu Pro FIPS-updates 18.04 LTS | linux-azure-fips | 4.15.0-2027.30 | — |
| Ubuntu Pro FIPS-updates 18.04 LTS | linux-fips | 4.15.0-1060.68 | — |
| Ubuntu Pro 16.04 LTS | linux-aws-hwe | 4.15.0-1102.109~16.04.1 | — |
| Ubuntu Pro 16.04 LTS | linux-azure | 4.15.0-1115.128~16.04.1 | — |
| Ubuntu Pro 16.04 LTS | linux-gcp | 4.15.0-1100.113~16.04.1 | — |
| Ubuntu Pro 16.04 LTS | linux-hwe | 4.15.0-144.148~16.04.1 | — |
| Ubuntu Pro 16.04 LTS | linux-oracle | 4.15.0-1072.80~16.04.1 | — |
| Ubuntu Pro 14.04 LTS | linux-azure | 4.15.0-1115.128~14.04.1 | — |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP3 | kernel-64kb +7 | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLES 15 SP3 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
| SLES 15 SP2 | kernel-default-base | 5.3.18-150200.24.188.1.150200.9.95.3 | SUSE-SU-2024:1454-1 |
| SLES 15 SP2 | kernel-docs +5 | 5.3.18-150200.24.188.1 | SUSE-SU-2024:1454-1 |
| SLES 12 SP5 | kernel-azure +2 | 4.12.14-16.173.1 | SUSE-SU-2024:0975-1 |
| SLES 12 SP5 | kernel-docs +3 | 4.12.14-122.201.1 | SUSE-SU-2024:0925-1 |
| SLES 12 SP5 | kernel-obs-build | 4.12.14-122.201.2 | SUSE-SU-2024:0925-1 |
Show 12 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP3 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
| SLES for SAP 15 SP3 | kernel-docs +5 | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLES for SAP 15 SP2 | kernel-default-base | 5.3.18-150200.24.188.1.150200.9.95.3 | SUSE-SU-2024:1454-1 |
| SLES for SAP 15 SP2 | kernel-docs +5 | 5.3.18-150200.24.188.1 | SUSE-SU-2024:1454-1 |
| SLES for SAP 12 SP5 | kernel-azure +2 | 4.12.14-16.173.1 | SUSE-SU-2024:0975-1 |
| SLES for SAP 12 SP5 | kernel-syms +2 | 4.12.14-122.201.1 | SUSE-SU-2024:0925-1 |
| SLE Real Time 12 SP5 | kernel-rt +3 | 4.12.14-10.171.1 | SUSE-SU-2024:0976-1 |
| SLE Micro 5.2 | kernel-default | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLE Micro 5.2 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
| SLE Micro 5.2 | kernel-rt +1 | 5.3.18-150300.166.1 | SUSE-SU-2024:1465-1 |
| SLE Micro 5.1 | kernel-default | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLE Micro 5.1 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
| SLE Micro 5.1 | kernel-rt +1 | 5.3.18-150300.166.1 | SUSE-SU-2024:1465-1 |
| SLE Live Patching 15 SP3 | kernel-default | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLE Live Patching 15 SP3 | kernel-livepatch-SLE15-SP3_Update_43 | 1-150300.7.3.5 | SUSE-SU-2024:1489-1 |
| SLE Live Patching 15 SP2 | kernel-default | 5.3.18-150200.24.188.1 | SUSE-SU-2024:1454-1 |
| SLE Live Patching 15 SP2 | kernel-livepatch-SLE15-SP2_Update_47 | 1-150200.5.3.3 | SUSE-SU-2024:1454-1 |
| SLE Live Patching 12 SP5 | kernel-default | 4.12.14-122.201.1 | SUSE-SU-2024:0925-1 |
| SLE Live Patching 12 SP5 | kgraft-patch-SLE12-SP5_Update_54 | 1-8.7.1 | SUSE-SU-2024:0925-1 |
| SLE HPC 15 SP3 | kernel-64kb +6 | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SLE HPC 15 SP3 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
| SLE HPC 15 SP2 | kernel-default-base | 5.3.18-150200.24.188.1.150200.9.95.3 | SUSE-SU-2024:1454-1 |
| SLE HPC 15 SP2 | kernel-docs +5 | 5.3.18-150200.24.188.1 | SUSE-SU-2024:1454-1 |
| SUSE Enterprise Storage 7.1 | kernel-64kb +6 | 5.3.18-150300.59.158.1 | SUSE-SU-2024:1489-1 |
| SUSE Enterprise Storage 7.1 | kernel-default-base | 5.3.18-150300.59.158.1.150300.18.92.5 | SUSE-SU-2024:1489-1 |
Advisories 7
- SUSE-SU-2024:1489-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0975-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0976-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:1454-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:1465-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0925-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- WID-SEC-2024-0488 Linux Kernel: Mehrere Schwachstellen ermöglichen nicht spezifizierten Angriff BSI CERT-Bund (WID) · Oct 1, 2025
References
- https://git.kernel.org/stable/c/5902f9453a313be8fe78cbd7e7ca9dba9319fc6e
- https://git.kernel.org/stable/c/82808cc026811fbc3ecf0c0b267a12a339eead56
- https://git.kernel.org/stable/c/82fa9ced35d88581cffa4a1c856fc41fca96d80a
- https://git.kernel.org/stable/c/d558fcdb17139728347bccc60a16af3e639649d2
- https://git.kernel.org/stable/c/84a24bf8c52e66b7ac89ada5e3cfbe72d65c1896