sugov_update_shared() may get called to clear the scheduling class flags
and we would return immediately in that case. Calling sugov_get_util()
in that case isn't going to be of any use then. Move invocation of
sugov_get_util() after the clear flag is checked.

Signed-off-by: Viresh Kumar <[email protected]>
---
 kernel/sched/cpufreq_schedutil.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 7edfdc59ee8f..b69c37c867fe 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -349,8 +349,6 @@ static void sugov_update_shared(struct update_util_data 
*hook, u64 time,
        unsigned long util, max;
        unsigned int next_f;
 
-       sugov_get_util(&util, &max, sg_cpu->cpu);
-
        raw_spin_lock(&sg_policy->update_lock);
 
        if (unlikely(flags & SCHED_CPUFREQ_CLEAR)) {
@@ -358,6 +356,8 @@ static void sugov_update_shared(struct update_util_data 
*hook, u64 time,
                goto unlock;
        }
 
+       sugov_get_util(&util, &max, sg_cpu->cpu);
+
        sg_cpu->util = util;
        sg_cpu->max = max;
        sg_cpu->flags |= flags;
-- 
2.15.0.194.g9af6a3dea062

Reply via email to