[tip: sched/core] sched: Simplify sched_move_task()

From: tip-bot2 for Peter Zijlstra
Date: Wed Sep 13 2023 - 09:11:20 EST


The following commit has been merged into the sched/core branch of tip:

Commit-ID: fa614b4feb5a246474ac71b45e520a8ddefc809c
Gitweb: https://git.kernel.org/tip/fa614b4feb5a246474ac71b45e520a8ddefc809c
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
AuthorDate: Fri, 09 Jun 2023 20:41:09 +02:00
Committer: Ingo Molnar <mingo@xxxxxxxxxx>
CommitterDate: Wed, 13 Sep 2023 15:01:38 +02:00

sched: Simplify sched_move_task()

Use guards to reduce gotos and simplify control flow.

Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
---
kernel/sched/core.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index d298176..a3f4fb8 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -10437,17 +10437,18 @@ void sched_move_task(struct task_struct *tsk)
int queued, running, queue_flags =
DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK;
struct task_group *group;
- struct rq_flags rf;
struct rq *rq;

- rq = task_rq_lock(tsk, &rf);
+ CLASS(task_rq_lock, rq_guard)(tsk);
+ rq = rq_guard.rq;
+
/*
* Esp. with SCHED_AUTOGROUP enabled it is possible to get superfluous
* group changes.
*/
group = sched_get_task_group(tsk);
if (group == tsk->sched_task_group)
- goto unlock;
+ return;

update_rq_clock(rq);

@@ -10472,9 +10473,6 @@ void sched_move_task(struct task_struct *tsk)
*/
resched_curr(rq);
}
-
-unlock:
- task_rq_unlock(rq, tsk, &rf);
}

static inline struct task_group *css_tg(struct cgroup_subsys_state *css)