Re: [PATCH] psi: simplify cgroup_move_task

From: Andrew Morton
Date: Mon Nov 05 2018 - 19:29:36 EST


On Sat, 3 Nov 2018 11:33:39 -0700 Olof Johansson <olof@xxxxxxxxx> wrote:

> 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]
>
> --- a/kernel/sched/psi.c
> +++ b/kernel/sched/psi.c
> @@ -633,38 +633,39 @@ 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) {
> - rq = task_rq_lock(task, &rf);
> + 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;
> + }

Fair enough.

Surprisingly this doesn't increase psi.o text size.