CVE-2025-38234CWE-362

CVE-2025-38234

High · published July 4, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
5.8
In the wild
Unconfirmed
What it is

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

sched/rt: Fix race in push_rt_task

Overview

========

When a CPU chooses to call push_rt_task and picks a task to push to

another CPU's runqueue then it will call find_lock_lowest_rq method

which would take a double lock on both CPUs' runqueues. If one of the

locks aren't readily available, it may lead to dropping the current

runqueue lock and reacquiring both the locks at once. During this window

it is possible that the task is already migrated and is running on some

other CPU. These cases are already handled. However, if the task is

migrated and has already been executed and another CPU is now trying to

wake it up (ttwu) such that it is queued again on the runqeue

(on_rq is 1) and also if the task was run by the same CPU, then the

current checks will pass even though the task was migrated out and is no

longer in the pushable tasks list.

Crashes

=======

This bug resulted in quite a few flavors of crashes triggering kernel

panics with various crash signatures such as assert failures, page

faults, null pointer dereferences, and queue corruption errors all

coming from scheduler itself.

Some of the crashes:

-> kernel BUG at kernel/sched/rt.c:1616! BUG_ON(idx >= MAX_RT_PRIO)

Call Trace:

? __die_body+0x1a/0x60

? die+0x2a/0x50

? do_trap+0x85/0x100

? pick_next_task_rt+0x6e/0x1d0

? do_error_trap+0x64/0xa0

? pick_next_task_rt+0x6e/0x1d0

? exc_invalid_op+0x4c/0x60

? pick_next_task_rt+0x6e/0x1d0

? asm_exc_invalid_op+0x12/0x20

? pick_next_task_rt+0x6e/0x1d0

__schedule+0x5cb/0x790

? update_ts_time_stats+0x55/0x70

schedule_idle+0x1e/0x40

do_idle+0x15e/0x200

cpu_startup_entry+0x19/0x20

start_secondary+0x117/0x160

secondary_startup_64_no_verify+0xb0/0xbb

-> BUG: kernel NULL pointer dereference, address: 00000000000000c0

Call Trace:

? __die_body+0x1a/0x60

? no_context+0x183/0x350

? __warn+0x8a/0xe0

? exc_page_fault+0x3d6/0x520

? asm_exc_page_fault+0x1e/0x30

? pick_next_task_rt+0xb5/0x1d0

? pick_next_task_rt+0x8c/0x1d0

__schedule+0x583/0x7e0

? update_ts_time_stats+0x55/0x70

schedule_idle+0x1e/0x40

do_idle+0x15e/0x200

cpu_startup_entry+0x19/0x20

start_secondary+0x117/0x160

secondary_startup_64_no_verify+0xb0/0xbb

-> BUG: unable to handle page fault for address: ffff9464daea5900

kernel BUG at kernel/sched/rt.c:1861! BUG_ON(rq->cpu != task_cpu(p))

-> kernel BUG at kernel/sched/rt.c:1055! BUG_ON(!rq->nr_running)

Call Trace:

? __die_body+0x1a/0x60

? die+0x2a/0x50

? do_trap+0x85/0x100

? dequeue_top_rt_rq+0xa2/0xb0

? do_error_trap+0x64/0xa0

? dequeue_top_rt_rq+0xa2/0xb0

? exc_invalid_op+0x4c/0x60

? dequeue_top_rt_rq+0xa2/0xb0

? asm_exc_invalid_op+0x12/0x20

? dequeue_top_rt_rq+0xa2/0xb0

dequeue_rt_entity+0x1f/0x70

dequeue_task_rt+0x2d/0x70

__schedule+0x1a8/0x7e0

? blk_finish_plug+0x25/0x40

schedule+0x3c/0xb0

futex_wait_queue_me+0xb6/0x120

futex_wait+0xd9/0x240

do_futex+0x344/0xa90

? get_mm_exe_file+0x30/0x60

? audit_exe_compare+0x58/0x70

? audit_filter_rules.constprop.26+0x65e/0x1220

__x64_sys_futex+0x148/0x1f0

do_syscall_64+0x30/0x80

entry_SYSCALL_64_after_hwframe+0x62/0xc7

-> BUG: unable to handle page fault for address: ffff8cf3608bc2c0

Call Trace:

? __die_body+0x1a/0x60

? no_context+0x183/0x350

? spurious_kernel_fault+0x171/0x1c0

? exc_page_fault+0x3b6/0x520

? plist_check_list+0x15/0x40

? plist_check_list+0x2e/0x40

? asm_exc_page_fault+0x1e/0x30

? _cond_resched+0x15/0x30

? futex_wait_queue_me+0xc8/0x120

? futex_wait+0xd9/0x240

? try_to_wake_up+0x1b8/0x490

? futex_wake+0x78/0x160

? do_futex+0xcd/0xa90

? plist_check_list+0x15/0x40

? plist_check_list+0x2e/0x40

? plist_del+0x6a/0xd0

? plist_check_list+0x15/0x40

? plist_check_list+0x2e/0x40

? dequeue_pushable_task+0x20/0x70

? __schedule+0x382/0x7e0

? asm_sysvec_reschedule_i

---truncated---

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00168 · 5.8th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2025-07-04T18:15Z
Affected products (1)
ProductVersionsFixed in
linux/linux_kernel< 6.15.46.15.4
References (4)
EPSS history
Timeline
  • 04 JUL 13:37Z
    sched/rt: Fix race in push_rt_task
    cvelistv5