]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched_ext: Fix scx_bpf_reenqueue_local() silently reenqueuing nothing
authorCheng-Yang Chou <yphbchou0911@gmail.com>
Sat, 7 Mar 2026 17:26:28 +0000 (01:26 +0800)
committerTejun Heo <tj@kernel.org>
Sat, 7 Mar 2026 18:10:25 +0000 (08:10 -1000)
ffa7ae0724e4 ("sched_ext: Add reenq_flags plumbing to scx_bpf_dsq_reenq()")
introduced task_should_reenq() as a filter inside reenq_local(), requiring
SCX_REENQ_ANY to be set in order to match any task. scx_bpf_dsq_reenq()
handles this correctly by converting a bare reenq_flags=0 to SCX_REENQ_ANY,
but scx_bpf_reenqueue_local() was not updated and continued to call
reenq_local() with 0, causing it to silently reenqueue zero tasks.

Fix by passing SCX_REENQ_ANY directly.

Fixes: ffa7ae0724e4 ("sched_ext: Add reenq_flags plumbing to scx_bpf_dsq_reenq()")
Signed-off-by: Cheng-Yang Chou <yphbchou0911@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index d5849ed4cd3e597c0a62c73a1e277d7dc7f77824..f6bafcfe0b93f2a1e8bb611774056cb5d65aced7 100644 (file)
@@ -8121,7 +8121,7 @@ __bpf_kfunc u32 scx_bpf_reenqueue_local(const struct bpf_prog_aux *aux)
        rq = cpu_rq(smp_processor_id());
        lockdep_assert_rq_held(rq);
 
-       return reenq_local(sch, rq, 0);
+       return reenq_local(sch, rq, SCX_REENQ_ANY);
 }
 
 __bpf_kfunc_end_defs();