diff mbox series

[1/2] cpufreq: Reorder cpufreq_online() a bit

Message ID bd8c6133ad0bdd56c936802bcf26878d7cbdb679.1519279148.git.viresh.kumar@linaro.org
State Accepted
Commit b24b6478e65f140610ab1ffaadc7bc6bf0be8aad
Headers show
Series [1/2] cpufreq: Reorder cpufreq_online() a bit | expand

Commit Message

Viresh Kumar Feb. 22, 2018, 5:59 a.m. UTC
Ideally the de-allocation of resources should happen in the exact
opposite order in which they were allocated. It helps maintain the code
in long term, even if nothing really breaks with incorrect ordering.

The same wasn't followed in cpufreq_online() and it has some
inconsistencies. For example, the symlinks were created from within the
locked region while they are removed only after putting the locks. Also
->exit() should have been called only after the symlinks are removed and
the lock is dropped, as that was the case when ->init() was first
called.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

---
 drivers/cpufreq/cpufreq.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.15.0.194.g9af6a3dea062
diff mbox series

Patch

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index de33ebf008ad..8814c572e263 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1327,14 +1327,14 @@  static int cpufreq_online(unsigned int cpu)
 	return 0;
 
 out_exit_policy:
+	for_each_cpu(j, policy->real_cpus)
+		remove_cpu_dev_symlink(policy, get_cpu_device(j));
+
 	up_write(&policy->rwsem);
 
 	if (cpufreq_driver->exit)
 		cpufreq_driver->exit(policy);
 
-	for_each_cpu(j, policy->real_cpus)
-		remove_cpu_dev_symlink(policy, get_cpu_device(j));
-
 out_free_policy:
 	cpufreq_policy_free(policy);
 	return ret;