Description
In the Linux kernel, the following vulnerability has been resolved:
powerpc/qspinlock: Fix deadlock in MCS queue
If an interrupt occurs in queued_spin_lock_slowpath() after we increment
qnodesp->count and before node->lock is initialized, another CPU might
see stale lock values in get_tail_qnode(). If the stale lock value happens
to match the lock on that CPU, then we write to the "next" pointer of
the wrong qnode. This causes a deadlock as the former CPU, once it becomes
the head of the MCS queue, will spin indefinitely until it's "next" pointer
is set by its successor in the queue.
Running stress-ng on a 16 core (16EC/16VP) shared LPAR, results in
occasional lockups similar to the following:
$ stress-ng --all 128 --vm-bytes 80% --aggressive \
--maximize --oomable --verify --syslog \
--metrics --times --timeout 5m
watchdog: CPU 15 Hard LOCKUP
......
NIP [c0000000000b78f4] queued_spin_lock_slowpath+0x1184/0x1490
LR [c000000001037c5c] _raw_spin_lock+0x6c/0x90
Call Trace:
0xc000002cfffa3bf0 (unreliable)
_raw_spin_lock+0x6c/0x90
raw_spin_rq_lock_nested.part.135+0x4c/0xd0
sched_ttwu_pending+0x60/0x1f0
__flush_smp_call_function_queue+0x1dc/0x670
smp_ipi_demux_relaxed+0xa4/0x100
xive_muxed_ipi_action+0x20/0x40
__handle_irq_event_percpu+0x80/0x240
handle_irq_event_percpu+0x2c/0x80
handle_percpu_irq+0x84/0xd0
generic_handle_irq+0x54/0x80
__do_irq+0xac/0x210
__do_IRQ+0x74/0xd0
0x0
do_IRQ+0x8c/0x170
hardware_interrupt_common_virt+0x29c/0x2a0
--- interrupt: 500 at queued_spin_lock_slowpath+0x4b8/0x1490
......
NIP [c0000000000b6c28] queued_spin_lock_slowpath+0x4b8/0x1490
LR [c000000001037c5c] _raw_spin_lock+0x6c/0x90
--- interrupt: 500
0xc0000029c1a41d00 (unreliable)
_raw_spin_lock+0x6c/0x90
futex_wake+0x100/0x260
do_futex+0x21c/0x2a0
sys_futex+0x98/0x270
system_call_exception+0x14c/0x2f0
system_call_vectored_common+0x15c/0x2ec
The following code flow illustrates how the deadlock occurs.
For the sake of brevity, assume that both locks (A and B) are
contended and we call the queued_spin_lock_slowpath() function.
CPU0 CPU1
---- ----
spin_lock_irqsave(A) |
spin_unlock_irqrestore(A) |
spin_lock(B) |
| |
▼ |
id = qnodesp->count++; |
(Note that nodes[0].lock == A) |
| |
▼ |
Interrupt |
(happens before "nodes[0].lock = B") |
| |
▼ |
spin_lock_irqsave(A) |
| |
▼ |
id = qnodesp->count++ |
nodes[1].lock = A |
| |
▼ |
Tail of MCS queue |
| spin_lock_irqsave(A)
▼ |
Head of MCS queue ▼
| CPU0 is previous tail
▼ |
Spin indefinitely ▼
(until "nodes[1].next != NULL") prev = get_tail_qnode(A, CPU0)
|
▼
prev == &qnodes[CPU0].nodes[0]
(as qnodes
---truncated---
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 6.2 | 6.6.51 |
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 | 6.10.11-1 | — |
| Debian 13 | linux | 6.10.11-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 24.04 LTS | linux | 6.8.0-50.51 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-aws | 6.8.0-1020.22 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-azure | 6.8.0-1020.23 | USN-7196-1 |
| Ubuntu 24.04 LTS | linux-gcp +1 | 6.8.0-1019.21 | USN-7155-1, USN-7154-1 |
| Ubuntu 24.04 LTS | linux-gke | 6.8.0-1015.19 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-gkeop | 6.8.0-1002.4 | USN-7156-1 |
| Ubuntu 24.04 LTS | linux-ibm | 6.8.0-1017.17 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-nvidia-lowlatency | 6.8.0-1019.21.1 | USN-7155-1 |
| Ubuntu 24.04 LTS | linux-oem-6.8 | 6.8.0-1018.18 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-oracle | 6.8.0-1017.18 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-raspi | 6.8.0-1016.18 | USN-7154-1 |
| Ubuntu 24.04 LTS | linux-riscv +1 | 6.8.0-50.51.1 | USN-7154-1 |
| Ubuntu 22.04 LTS | linux-aws-6.8 | 6.8.0-1020.22~22.04.1 | USN-7154-1 |
| Ubuntu 22.04 LTS | linux-azure-6.8 | 6.8.0-1020.23~22.04.1 | USN-7196-1 |
| Ubuntu 22.04 LTS | linux-gcp-6.8 +1 | 6.8.0-1019.21~22.04.1 | USN-7155-1, USN-7154-1 |
| Ubuntu 22.04 LTS | linux-hwe-6.8 | 6.8.0-50.51~22.04.1 | USN-7154-2 |
| Ubuntu 22.04 LTS | linux-oracle-6.8 | 6.8.0-1017.18~22.04.1 | USN-7154-1 |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv-6.8 +1 | 6.8.0-50.51.1~22.04.1 | USN-7154-1 |
| Ubuntu 20.04 LTS | linux-gke +26 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +13 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Show 1 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro Realtime 24.04 LTS | linux-raspi-realtime | 6.8.0-2015.16 | — |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime | 6.8.1-1013.14 | — |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP6 | kernel-64kb +4 | 6.4.0-150600.23.25.1 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| SLES 15 SP6 | kernel-azure +2 | 6.4.0-150600.8.14.1 | SUSE-SU-2024:3984-1, SUSE-SU-2024:3551-1 |
| SLES 15 SP6 | kernel-coco +3 | 6.4.0-15061.6.coco15sp6.1 | SUSE-SU-2024:4387-1, SUSE-SU-2024:3553-1 |
| SLES 15 SP6 | kernel-default-base | 6.4.0-150600.23.25.1.150600.12.10.2 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| SLES 15 SP6 | kernel-docs +1 | 6.4.0-150600.23.25.2 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
Show 4 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLE Micro 6.1 | kernel-default-base | 6.4.0-24.1.21.4 | SUSE-SU-2025:20247-1 |
| SLE Micro 6.1 | kernel-livepatch-MICRO-6-0-RT_Update_4 | 1-1.1 | SUSE-SU-2025:20246-1 |
| SLE Micro 6.1 | kernel-livepatch-MICRO-6-0_Update_4 | 1-1.2 | SUSE-SU-2025:20247-1 |
| SLE Micro 6.1 | kernel-rt +1 | 6.4.0-22.1 | SUSE-SU-2025:20246-1 |
| SLE Micro 6.1 | kernel-source +2 | 6.4.0-24.1 | SUSE-SU-2025:20247-1 |
| SLE Micro 6.0 | kernel-default-base | 6.4.0-17.1.1.51 | SUSE-SU-2025:20164-1, SUSE-SU-2025:20073-1 |
| SLE Micro 6.0 | kernel-livepatch-MICRO-6-0-RT_Update_4 | 1-1.1 | SUSE-SU-2025:20163-1 |
| SLE Micro 6.0 | kernel-livepatch-MICRO-6-0_Update_3 +2 | 1-1.2 | SUSE-SU-2025:20164-1, SUSE-SU-2025:20077-1, SUSE-SU-2025:20073-1 |
| SLE Micro 6.0 | kernel-rt +1 | 6.4.0-11.1 | SUSE-SU-2025:20163-1, SUSE-SU-2025:20077-1 |
| SLE Micro 6.0 | kernel-source +2 | 6.4.0-20.1 | SUSE-SU-2025:20164-1, SUSE-SU-2025:20073-1 |
| SLE Live Patching 15 SP6 | kernel-default | 6.4.0-150600.23.25.1 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| SLE Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6-RT_Update_4 +1 | 1-150600.1.3.1 | SUSE-SU-2024:3986-1, SUSE-SU-2024:3564-1 |
| SLE Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_5 | 1-150600.13.3.1 | SUSE-SU-2024:3561-1 |
| SLE Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_6 | 1-150600.13.3.5 | SUSE-SU-2024:4318-1 |
| SUSE Real Time Module 15 SP6 | kernel-rt +3 | 6.4.0-150600.10.14.1 | SUSE-SU-2024:3986-1, SUSE-SU-2024:3564-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Leap 15.6 | dtb-aarch64 +8 | 6.4.0-150600.23.25.1 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| openSUSE Leap 15.6 | kernel-azure +2 | 6.4.0-150600.8.14.1 | SUSE-SU-2024:3984-1, SUSE-SU-2024:3551-1 |
| openSUSE Leap 15.6 | kernel-default-base | 6.4.0-150600.23.25.1.150600.12.10.2 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| openSUSE Leap 15.6 | kernel-docs +1 | 6.4.0-150600.23.25.2 | SUSE-SU-2024:4318-1, SUSE-SU-2024:3561-1 |
| openSUSE Leap 15.6 | kernel-rt +3 | 6.4.0-150600.10.14.1 | SUSE-SU-2024:3986-1, SUSE-SU-2024:3564-1 |
Advisories 20
- WID-SEC-2024-2173 Linux Kernel: Mehrere Schwachstellen BSI CERT-Bund (WID) · Nov 9, 2026
- USN-7154-1 linux, linux-aws, linux-aws-6.8, linux-gcp, linux-gcp-6.8, linux-gke, linux-ibm, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-oem-6.8, linux-oracle, linux-oracle-6.8, linux-raspi vulnerabilities Ubuntu Security Notices (USN) · Oct 29, 2026
- USN-7155-1 linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency vulnerabilities Ubuntu Security Notices (USN) · Oct 29, 2026
- USN-7196-1 linux-azure, linux-azure-6.8 vulnerabilities Ubuntu Security Notices (USN) · Oct 29, 2026
- USN-7156-1 linux-gkeop vulnerabilities Ubuntu Security Notices (USN) · Oct 29, 2026
- USN-7154-2 linux-hwe-6.8 vulnerabilities Ubuntu Security Notices (USN) · Oct 29, 2026
- SUSE-SU-2025:20163-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:20246-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:20164-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:20073-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:20247-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2025:20077-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2024:4318-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3551-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3561-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3984-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3986-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3564-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:4387-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:3553-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026