Re: [PATCH] sched/core: uclamp: fix wrong condition

From: Vincent Guittot
Date: Fri Nov 15 2019 - 03:02:27 EST


On Thu, 14 Nov 2019 at 22:10, Qais Yousef <qais.yousef@xxxxxxx> wrote:
>
> uclamp_update_active() should perform the update when
> p->uclamp[clamp_id].active is true. But when the logic was inverted in
> [1], the if condition wasn't inverted correctly too.
>
> [1] https://lore.kernel.org/lkml/20190902073836.GO2369@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
>
> Fixes: babbe170e053 ("sched/uclamp: Update CPU's refcount on TG's clamp changes")
> Reported-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>
> Signed-off-by: Qais Yousef <qais.yousef@xxxxxxx>
> CC: Juri Lelli <juri.lelli@xxxxxxxxxx>
> CC: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
> CC: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
> CC: Steven Rostedt <rostedt@xxxxxxxxxxx>
> CC: Ben Segall <bsegall@xxxxxxxxxx>
> CC: Mel Gorman <mgorman@xxxxxxx>
> CC: Patrick Bellasi <patrick.bellasi@xxxxxxxxxx>
> CC: linux-kernel@xxxxxxxxxxxxxxx

Acked-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>

> ---
> kernel/sched/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 0f2eb3629070..2de53489c909 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -1065,7 +1065,7 @@ uclamp_update_active(struct task_struct *p, enum uclamp_id clamp_id)
> * affecting a valid clamp bucket, the next time it's enqueued,
> * it will already see the updated clamp bucket value.
> */
> - if (!p->uclamp[clamp_id].active) {
> + if (p->uclamp[clamp_id].active) {
> uclamp_rq_dec_id(rq, p, clamp_id);
> uclamp_rq_inc_id(rq, p, clamp_id);
> }
> --
> 2.17.1
>