From: Jules Maselbas <jules.maselbas@xxxxxxx> This patch prevents the 'global_tunables_lock' mutex from being unlocked before being locked. This mutex is not locked if the sugov_kthread_create() function fails. Signed-off-by: Jules Maselbas <jules.maselbas@xxxxxxx> Acked-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Chris Redpath <chris.redpath@xxxxxxx> Cc: Dietmar Eggermann <dietmar.eggemann@xxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Mike Galbraith <efault@xxxxxx> Cc: Patrick Bellasi <patrick.bellasi@xxxxxxx> Cc: Stephen Kyle <stephen.kyle@xxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: linux-kernel@xxxxxxxxxxxxxxx Cc: nd@xxxxxxx Link: http://lkml.kernel.org/r/20180329144301.38419-1-jules.maselbas@xxxxxxx Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> (cherry picked from commit 1b5d43cfb69759d8ef8d30469cea31d0c037aed5) Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> --- kernel/sched/cpufreq_schedutil.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 81eb7899c7c8..b314c9eaa71d 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -605,10 +605,9 @@ static int sugov_init(struct cpufreq_policy *policy) stop_kthread: sugov_kthread_stop(sg_policy); - -free_sg_policy: mutex_unlock(&global_tunables_lock); +free_sg_policy: sugov_policy_free(sg_policy); disable_fast_switch: -- 2.20.0