CVE-2025-21816
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
27/02/2025
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
hrtimers: Force migrate away hrtimers queued after CPUHP_AP_HRTIMERS_DYING<br />
<br />
hrtimers are migrated away from the dying CPU to any online target at<br />
the CPUHP_AP_HRTIMERS_DYING stage in order not to delay bandwidth timers<br />
handling tasks involved in the CPU hotplug forward progress.<br />
<br />
However wakeups can still be performed by the outgoing CPU after<br />
CPUHP_AP_HRTIMERS_DYING. Those can result again in bandwidth timers being<br />
armed. Depending on several considerations (crystal ball power management<br />
based election, earliest timer already enqueued, timer migration enabled or<br />
not), the target may eventually be the current CPU even if offline. If that<br />
happens, the timer is eventually ignored.<br />
<br />
The most notable example is RCU which had to deal with each and every of<br />
those wake-ups by deferring them to an online CPU, along with related<br />
workarounds:<br />
<br />
_ e787644caf76 (rcu: Defer RCU kthreads wakeup when CPU is dying)<br />
_ 9139f93209d1 (rcu/nocb: Fix RT throttling hrtimer armed from offline CPU)<br />
_ f7345ccc62a4 (rcu/nocb: Fix rcuog wake-up from offline softirq)<br />
<br />
The problem isn&#39;t confined to RCU though as the stop machine kthread<br />
(which runs CPUHP_AP_HRTIMERS_DYING) reports its completion at the end<br />
of its work through cpu_stop_signal_done() and performs a wake up that<br />
eventually arms the deadline server timer:<br />
<br />
WARNING: CPU: 94 PID: 588 at kernel/time/hrtimer.c:1086 hrtimer_start_range_ns+0x289/0x2d0<br />
CPU: 94 UID: 0 PID: 588 Comm: migration/94 Not tainted<br />
Stopper: multi_cpu_stop+0x0/0x120
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.19.302 (including) | 4.20 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.4.264 (including) | 5.5 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.204 (including) | 5.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.143 (including) | 5.16 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.68 (including) | 6.1.141 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.7 (including) | 6.6.93 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7.1 (including) | 6.12.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.13.3 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.7:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.7:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2aecec58e9040ce3d2694707889f9914a2374955
- https://git.kernel.org/stable/c/53dac345395c0d2493cbc2f4c85fe38aef5b63f5
- https://git.kernel.org/stable/c/63815bef47ec25f5a125019ca480882481ee1553
- https://git.kernel.org/stable/c/82ac6adbbb2aad14548a71d5e2e37f4964a15e38
- https://git.kernel.org/stable/c/e456a88bddae4030ba962447bb84be6669f2a0c1
- https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html



