Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: sched_ext: Wait for SCX_OPSS_DISPATCHING before reenqueueing a task ebf1ccff79c4 ("sched_ext: Fix ops.dequeue() semantics") moved the final ops_state store in scx_dispatch_enqueue() after the DSQ unlock so that the custody update and ops.dequeue() precede it. A task can thus be found on a DSQ while still SCX_OPSS_DISPATCHING. The dequeue and core-sched pick paths wait for the state to clear in ops_dequeue() but the reenqueue paths don't. A reenqueue in that window runs ops.enqueue() and sets SCX_OPSS_QUEUED before the dispatch has completed. The dispatcher's final store then overwrites it with SCX_OPSS_NONE and finish_dispatch() drops every later dispatch of the task. Wait for SCX_OPSS_DISPATCHING to clear before dequeueing a task for reenqueue, the same way ops_dequeue() does.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected ebf1ccff79c43f860cbd2f9d6cfab9a462d0cb2d before 43457bf6550044c40bd6d3fcdf9ea66f5a55d139; affected ebf1ccff79c43f860cbd2f9d6cfab9a462d0cb2d before 7de9a6fb44eae4f05e68c805d58b9c618815adfa |
| Linux / Linux | affected 7.1; unaffected 0 before 7.1; unaffected 7.2.10 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.