Re: [PATCH 1/2] sched_ext: Fix ops.dequeue() semantics

From: Kuba Piecuch

Date: Mon Feb 02 2026 - 09:12:10 EST


Hi Andrea,

On Mon Feb 2, 2026 at 7:45 AM UTC, Andrea Righi wrote:
> diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
> index 6d6f1253039d8..d8fed4a49195d 100644
> --- a/kernel/sched/ext.c
> +++ b/kernel/sched/ext.c
> @@ -2248,7 +2248,7 @@ static void finish_dispatch(struct scx_sched *sch, struct rq *rq,
> p->scx.flags |= SCX_TASK_OPS_ENQUEUED;
> } else {
> if (p->scx.flags & SCX_TASK_OPS_ENQUEUED)
> - SCX_CALL_OP_TASK(sch, SCX_KF_REST, dequeue, task_rq(p), p, 0);
> + SCX_CALL_OP_TASK(sch, SCX_KF_REST, dequeue, rq, p, 0);
>
> p->scx.flags &= ~SCX_TASK_OPS_ENQUEUED;
> }

This looks risky from a locking perspective. Are we relying on
SCX_OPSS_DISPATCHING to protect against racing dequeues? If so, it might
be worth calling out in a comment.

Thanks,
Kuba