CVE-2026-99269: sched_ext: Wait for SCX_OPSS_DISPATCHING before moving tasks off DSQs
In the Linux kernel, the following vulnerability has been resolved:
schedext: Wait for SCXOPSSDISPATCHING before moving tasks off DSQs
A task can be found on a non-local DSQ while the CPU which dispatched it is still running ops.dequeue() and hasn't cleared SCXOPSSDISPATCHING. The DSQ consume and move paths don't wait for the dispatch to finish and can operate on the task concurrently with the dispatcher.
Call scxwaitdispatching() in scxmovelocaltasktolocaldsq(), unlinkdsqandswitchrqlock() and movetaskbetweendsqs() before they operate on the task. In scxmovelocaltasktolocaldsq(), wait before scxresolvelocaldsq() as it may update p->scx.flags.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.115-2Fixed in 7.2.15-1 - Upgrade
Upgrade
linux/Kernelto a version that resolves this vulnerability.Fixed in 7.2.14 - Compensating control
In sched_ext DSQ consume and move paths, call scx_wait_dispatching() before operating on the task in scx_move_local_task_to_local_dsq(), unlink_dsq_and_switch_rq_lock(), and move_task_between_dsqs(); in scx_move_local_task_to_local_dsq(), call it before scx_resolve_local_dsq() because that function may update p->scx.flags.