Skip to content

Commit d72052a

Browse files
committed
Merge tag 'sched_ext-for-6.17-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext
Pull sched_ext fixes from Tejun Heo: - Fix a subtle bug during SCX enabling where a dead task skips init but doesn't skip sched class switch leading to invalid task state transition warning - Cosmetic fix in selftests * tag 'sched_ext-for-6.17-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext: selftests/sched_ext: Remove duplicate sched.h header sched/ext: Fix invalid task state transitions on class switch
2 parents 6439a0e + e69980b commit d72052a

2 files changed

Lines changed: 4 additions & 1 deletion

File tree

kernel/sched/ext.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5749,6 +5749,9 @@ static int scx_enable(struct sched_ext_ops *ops, struct bpf_link *link)
57495749
__setscheduler_class(p->policy, p->prio);
57505750
struct sched_enq_and_set_ctx ctx;
57515751

5752+
if (!tryget_task_struct(p))
5753+
continue;
5754+
57525755
if (old_class != new_class && p->se.sched_delayed)
57535756
dequeue_task(task_rq(p), p, DEQUEUE_SLEEP | DEQUEUE_DELAYED);
57545757

@@ -5761,6 +5764,7 @@ static int scx_enable(struct sched_ext_ops *ops, struct bpf_link *link)
57615764
sched_enq_and_set_task(&ctx);
57625765

57635766
check_class_changed(task_rq(p), p, old_class, p->prio);
5767+
put_task_struct(p);
57645768
}
57655769
scx_task_iter_stop(&sti);
57665770
percpu_up_write(&scx_fork_rwsem);

tools/testing/selftests/sched_ext/hotplug.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include <bpf/bpf.h>
77
#include <sched.h>
88
#include <scx/common.h>
9-
#include <sched.h>
109
#include <sys/wait.h>
1110
#include <unistd.h>
1211

0 commit comments

Comments
 (0)