Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cdc9ef3 authored by Viresh Kumar's avatar Viresh Kumar
Browse files

cpufreq: s3c64xx: call CPUFREQ_POSTCHANGE notfier in error cases



PRECHANGE and POSTCHANGE notifiers must be called in groups, i.e either both
should be called or both shouldn't be.

In case we have started PRECHANGE notifier and found an error, we must call
POSTCHANGE notifier with freqs.new = freqs.old to guarantee that sequence of
calling notifiers is complete.

This patch fixes it.

Cc: Mark Brown <broonie@linaro.org>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent 44a49a23
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -104,7 +104,8 @@ static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
		if (ret != 0) {
			pr_err("Failed to set VDDARM for %dkHz: %d\n",
			       freqs.new, ret);
			goto err;
			freqs.new = freqs.old;
			goto post_notify;
		}
	}
#endif
@@ -113,10 +114,13 @@ static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
	if (ret < 0) {
		pr_err("Failed to set rate %dkHz: %d\n",
		       freqs.new, ret);
		goto err;
		freqs.new = freqs.old;
	}

post_notify:
	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
	if (ret)
		goto err;

#ifdef CONFIG_REGULATOR
	if (vddarm && freqs.new < freqs.old) {