On Sat, 3 Nov 2018 11:33:39 -0700 Olof Johansson <o...@lixom.net> 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.