]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched: Fix sched_delayed vs sched_core
authorPeter Zijlstra <peterz@infradead.org>
Thu, 5 Sep 2024 15:02:24 +0000 (17:02 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 10 Sep 2024 07:51:15 +0000 (09:51 +0200)
Completely analogous to commit dfa0a574cbc4 ("sched/uclamg: Handle
delayed dequeue"), avoid double dequeue for the sched_core entries.

Fixes: 152e11f6df29 ("sched/fair: Implement delayed dequeue")
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
kernel/sched/core.c

index 2922facebae7dccd683d790692e44153842fd60e..b4c5d83e54d487e25d6f156b302a12a1b9b48bb2 100644 (file)
@@ -259,6 +259,9 @@ static inline int rb_sched_core_cmp(const void *key, const struct rb_node *node)
 
 void sched_core_enqueue(struct rq *rq, struct task_struct *p)
 {
+       if (p->se.sched_delayed)
+               return;
+
        rq->core->core_task_seq++;
 
        if (!p->core_cookie)
@@ -269,6 +272,9 @@ void sched_core_enqueue(struct rq *rq, struct task_struct *p)
 
 void sched_core_dequeue(struct rq *rq, struct task_struct *p, int flags)
 {
+       if (p->se.sched_delayed)
+               return;
+
        rq->core->core_task_seq++;
 
        if (sched_core_enqueued(p)) {