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.

Reply via email to