CVE-2025-21813

timers/migration: Fix off-by-one root mis-connection

published February 27, 2025

CVSS
—
EPSS
0%
Percentile
8.3
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

timers/migration: Fix off-by-one root mis-connection

Before attaching a new root to the old root, the children counter of the

new root is checked to verify that only the upcoming CPU's top group have

been connected to it. However since the recently added commit b729cc1ec21a

("timers/migration: Fix another race between hotplug and idle entry/exit")

this check is not valid anymore because the old root is pre-accounted

as a child to the new root. Therefore after connecting the upcoming

CPU's top group to the new root, the children count to be expected must

be 2 and not 1 anymore.

This omission results in the old root to not be connected to the new

root. Then eventually the system may run with more than one top level,

which defeats the purpose of a single idle migrator.

Also the old root is pre-accounted but not connected upon the new root

creation. But it can be connected to the new root later on. Therefore

the old root may be accounted twice to the new root. The propagation of

such overcommit can end up creating a double final top-level root with a

groupmask incorrectly initialized. Although harmless given that the final

top level roots will never have a parent to walk up to, this oddity

opportunistically reported the core issue:

WARNING: CPU: 8 PID: 0 at kernel/time/timer_migration.c:543 tmigr_requires_handle_remote

CPU: 8 UID: 0 PID: 0 Comm: swapper/8

RIP: 0010:tmigr_requires_handle_remote

Call Trace:

<IRQ>

? tmigr_requires_handle_remote

? hrtimer_run_queues

update_process_times

tick_periodic

tick_handle_periodic

__sysvec_apic_timer_interrupt

sysvec_apic_timer_interrupt

</IRQ>

Fix the problem by taking the old root into account in the children count

of the new root so the connection is not omitted.

Also warn when more than one top level group exists to better detect

similar issues in the future.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00191 · 8.3th percentile
Published
2025-02-27T20:04Z
EPSS history
Timeline
  • 27 FEB 20:04Z
    timers/migration: Fix off-by-one root mis-connection
    cvelistv5