Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
[firefly-linux-kernel-4.4.55.git] / drivers / cpufreq / cpufreq_interactive.c
index c08831720fa92d3263fa43c2fbef66240854e2ac..e1933678f2d04283f978329ddf66dc662a0c0715 100644 (file)
@@ -1139,13 +1139,6 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy,
                        return -ENOMEM;
                }
 
-               rc = sysfs_create_group(get_governor_parent_kobj(policy),
-                               get_sysfs_attr());
-               if (rc) {
-                       kfree(tunables);
-                       return rc;
-               }
-
                tunables->usage_count = 1;
                tunables->above_hispeed_delay = default_above_hispeed_delay;
                tunables->nabove_hispeed_delay =
@@ -1161,16 +1154,26 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy,
                spin_lock_init(&tunables->target_loads_lock);
                spin_lock_init(&tunables->above_hispeed_delay_lock);
 
+               policy->governor_data = tunables;
+               if (!have_governor_per_policy())
+                       common_tunables = tunables;
+
+               rc = sysfs_create_group(get_governor_parent_kobj(policy),
+                               get_sysfs_attr());
+               if (rc) {
+                       kfree(tunables);
+                       policy->governor_data = NULL;
+                       if (!have_governor_per_policy())
+                               common_tunables = NULL;
+                       return rc;
+               }
+
                if (!policy->governor->initialized) {
                        idle_notifier_register(&cpufreq_interactive_idle_nb);
                        cpufreq_register_notifier(&cpufreq_notifier_block,
                                        CPUFREQ_TRANSITION_NOTIFIER);
                }
 
-               policy->governor_data = tunables;
-               if (!have_governor_per_policy())
-                       common_tunables = tunables;
-
                break;
 
        case CPUFREQ_GOV_POLICY_EXIT: