diff options
| author | Tejun Heo <tj@kernel.org> | 2026-09-15 12:34:44 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-09-15 12:34:44 -1000 |
| commit | 7de9a6fb44eae4f05e68c805d58b9c618815adfa (patch) | |
| tree | b97f1f711082e3cbd8302005449d7fdc619796e1 /include/uapi/regulator | |
| parent | a9e3760b0838299649c0d57cca44daaf40ba3c33 (diff) | |
| download | linux-stable-7de9a6fb44eae4f05e68c805d58b9c618815adfa.tar.gz linux-stable-7de9a6fb44eae4f05e68c805d58b9c618815adfa.zip | |
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.
Fixes: ebf1ccff79c4 ("sched_ext: Fix ops.dequeue() semantics")
Cc: stable@vger.kernel.org # v7.1+
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'include/uapi/regulator')
0 files changed, 0 insertions, 0 deletions
