]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
sched_ext: initialize kit->cursor.flags
authorHenry Huang <henry.hj@antgroup.com>
Sun, 22 Dec 2024 15:43:16 +0000 (23:43 +0800)
committerTejun Heo <tj@kernel.org>
Tue, 24 Dec 2024 20:56:08 +0000 (10:56 -1000)
struct bpf_iter_scx_dsq *it maybe not initialized.
If we didn't call scx_bpf_dsq_move_set_vtime and scx_bpf_dsq_move_set_slice
before scx_bpf_dsq_move, it would cause unexpected behaviors:
1. Assign a huge slice into p->scx.slice
2. Assign a invalid vtime into p->scx.dsq_vtime

Signed-off-by: Henry Huang <henry.hj@antgroup.com>
Fixes: 6462dd53a260 ("sched_ext: Compact struct bpf_iter_scx_dsq_kern")
Cc: stable@vger.kernel.org # v6.12
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index 98519e6d0dcd061fc0ca8600320e918586d9e1e7..19d2699cf6383faa247e4bc874c88b83314e35b8 100644 (file)
@@ -7013,7 +7013,7 @@ __bpf_kfunc int bpf_iter_scx_dsq_new(struct bpf_iter_scx_dsq *it, u64 dsq_id,
                return -ENOENT;
 
        INIT_LIST_HEAD(&kit->cursor.node);
-       kit->cursor.flags |= SCX_DSQ_LNODE_ITER_CURSOR | flags;
+       kit->cursor.flags = SCX_DSQ_LNODE_ITER_CURSOR | flags;
        kit->cursor.priv = READ_ONCE(kit->dsq->seq);
 
        return 0;