CVE-2026-68094
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
10/08/2026
Last modified:
17/08/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
sched_ext: Preserve rq tracking across local DSQ dispatch<br />
<br />
dispatch_to_local_dsq() can run from scx_bpf_dsq_move_to_local() while<br />
ops.dispatch() has recorded the current rq. Moving a task to a local DSQ<br />
may switch to the source or destination rq before synchronously invoking<br />
ops.dequeue() through the following path:<br />
<br />
SCX_CALL_OP(dispatch, rq)<br />
ops.dispatch()<br />
scx_bpf_dsq_move_to_local()<br />
scx_flush_dispatch_buf()<br />
finish_dispatch()<br />
dispatch_to_local_dsq()<br />
scx_dispatch_enqueue()<br />
local_dsq_post_enq()<br />
call_task_dequeue()<br />
SCX_CALL_OP_TASK(dequeue, locked_rq, ...)<br />
<br />
The nested callback saves the recorded rq and restores it on return. If<br />
the rq tracking does not follow the lock switch, update_locked_rq() can<br />
trigger the following lockdep assertion while restoring an rq which is<br />
no longer held:<br />
<br />
WARNING: kernel/sched/sched.h:1641 at call_task_dequeue+0x160/0x170<br />
Call Trace:<br />
scx_dispatch_enqueue+0x2b0/0x460<br />
dispatch_to_local_dsq+0x138/0x230<br />
scx_flush_dispatch_buf+0x1af/0x220<br />
scx_bpf_dsq_move_to_local___v2+0xe2/0x1c0<br />
bpf__sched_ext_ops_dispatch+0x4b/0xa7<br />
do_pick_task_scx+0x3b6/0x910<br />
__pick_next_task+0x105/0x1f0<br />
__schedule+0x3e7/0x1980<br />
<br />
Introduce switch_rq_lock() to update the tracking state together with<br />
each rq lock handoff. Use it in dispatch_to_local_dsq(),<br />
move_remote_task_to_local_dsq() and the in-balance paths of<br />
scx_dsq_move(), ensuring that scx_locked_rq() consistently refers to the<br />
rq whose lock is actually held throughout the lock dance.


