Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88ec4749 authored by Olof Johansson's avatar Olof Johansson Committed by Patrick Daly
Browse files

kernel/sched/psi.c: simplify cgroup_move_task()

The existing code triggered an invalid warning about 'rq' possibly being
used uninitialized.  Instead of doing the silly warning suppression by
initializa it to NULL, refactor the code to bail out early instead.

Warning was:

  kernel/sched/psi.c: In function `cgroup_move_task':
  kernel/sched/psi.c:639:13: warning: `rq' may be used uninitialized in this function [-Wmaybe-uninitialized]

Link: http://lkml.kernel.org/r/20181103183339.8669-1-olof@lixom.net


Fixes: 2ce7135adc9ad ("psi: cgroup support")
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Change-Id: I2f21f70b6beee35d1fc77cf7dcb38f34bf96dfbd
Git-commit: 8fcb2312d1e3300e81aa871aad00d4c038cfc184
Git-repo: https://source.codeaurora.org/quic/la/kernel/msm-4.19


Signed-off-by: default avatarPatrick Daly <pdaly@codeaurora.org>
parent ae1bcb88
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -633,12 +633,19 @@ void psi_cgroup_free(struct cgroup *cgroup)
 */
void cgroup_move_task(struct task_struct *task, struct css_set *to)
{
	bool move_psi = !psi_disabled;
	unsigned int task_flags = 0;
	struct rq_flags rf;
	struct rq *rq;

	if (move_psi) {
	if (psi_disabled) {
		/*
		 * Lame to do this here, but the scheduler cannot be locked
		 * from the outside, so we move cgroups from inside sched/.
		 */
		rcu_assign_pointer(task->cgroups, to);
		return;
	}

	rq = task_rq_lock(task, &rf);

	if (task_on_rq_queued(task))
@@ -651,21 +658,15 @@ void cgroup_move_task(struct task_struct *task, struct css_set *to)

	if (task_flags)
		psi_task_change(task, task_flags, 0);
	}

	/*
	 * Lame to do this here, but the scheduler cannot be locked
	 * from the outside, so we move cgroups from inside sched/.
	 */
	/* See comment above */
	rcu_assign_pointer(task->cgroups, to);

	if (move_psi) {
	if (task_flags)
		psi_task_change(task, 0, task_flags);

	task_rq_unlock(rq, task, &rf);
}
}
#endif /* CONFIG_CGROUPS */

int psi_show(struct seq_file *m, struct psi_group *group, enum psi_res res)