In the Linux kernel, the following vulnerability has been resolved:
workqueue: Fix selection of wake_cpu in kick_pool()
With cpu_possible_mask=0-63 and cpu_online_mask=0-7 the following kernel oops was observed:
smp: Bringing up secondary CPUs ... smp: Brought up 1 node, 8 CPUs Unable to handle kernel pointer dereference in virtual kernel address space Failing address: 0000000000000000 TEID: 0000000000000803 [..] Call Trace: arch_vcpu_is_preempted+0x12/0x80 select_idle_sibling+0x42/0x560 select_task_rq_fair+0x29a/0x3b0 try_to_wake_up+0x38e/0x6e0 kick_pool+0xa4/0x198 __queue_work.part.0+0x2bc/0x3a8 call_timer_fn+0x36/0x160 __run_timers+0x1e2/0x328 __run_timer_base+0x5a/0x88 run_timer_softirq+0x40/0x78 __do_softirq+0x118/0x388 irq_exit_rcu+0xc0/0xd8 do_ext_irq+0xae/0x168 ext_int_handler+0xbe/0xf0 psw_idle_exit+0x0/0xc default_idle_call+0x3c/0x110 do_idle+0xd4/0x158 cpu_startup_entry+0x40/0x48 rest_init+0xc6/0xc8 start_kernel+0x3c4/0x5e0 startup_continue+0x3c/0x50
The crash is caused by calling arch_vcpu_is_preempted() for an offline CPU. To avoid this, select the cpu with cpumask_any_and_distribute() to mask __pod_cpumask with cpu_online_mask. In case no cpu is left in the pool, skip the assignment.
tj: This doesn't fully fix the bug as CPUs can still go down between picking the target CPU and the wake call. Fixing that likely requires adding cpu_online() test to either the sched or s390 arch code. However, regardless of how that is fixed, workqueue shouldn't be picking a CPU which isn't online as that would result in unpredictable and worse behavior.
CVSS Details
- CVSS 3.1 Base Score: 6.2
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 30, 2024 |
| Ubuntu | — | Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-lowlatencyUpgrade linux-image-6.8.0-1008-gkeUpgrade linux-image-ibmUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1010-ibmUpgrade linux-image-oracleUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1012-azure-fdeUpgrade linux-image-6.8.0-1011-nvidia-lowlatency-64kUpgrade linux-image-awsUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-40-lowlatency-64kUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1010-oracleUpgrade linux-image-ibm-classicUpgrade linux-image-gkeUpgrade linux-image-6.8.0-1011-nvidia-lowlatencyUpgrade linux-image-6.8.0-1011-nvidia-64kUpgrade linux-image-6.8.0-40-lowlatencyUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-generic-lpaeUpgrade linux-image-virtualUpgrade linux-image-genericUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-generic-64kUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1010-oemUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-1011-nvidiaUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1013-awsUpgrade linux-image-6.8.0-1010-oracle-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-1009-raspiUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-40-genericUpgrade linux-image-oem-24.04aUpgrade linux-image-nvidia-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1012-azureUpgrade linux-image-6.8.0-1012-gcpUpgrade linux-image-raspiUpgrade linux-image-azureUpgrade linux-image-6.8.0-40-generic-64kUpgrade linux-image-gcp | Aug 9, 2024 | May 30, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub