thermal: cpufreq_cooling: Check the policy first in cpufreq_cooling_register()
authorXuewen Yan <xuewen.yan@unisoc.com>
Thu, 25 Aug 2022 11:40:17 +0000 (19:40 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 3 Sep 2022 18:07:36 +0000 (20:07 +0200)
Since the policy needs to be accessed first when obtaining cpu devices,
first check whether the policy is legal before this.

Fixes: 5130802ddbb1 ("thermal: cpu_cooling: Switch to QoS requests for freq limits")
Signed-off-by: Xuewen Yan <xuewen.yan@unisoc.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/cpufreq_cooling.c

index b76293c..7838b6e 100644 (file)
@@ -501,17 +501,17 @@ __cpufreq_cooling_register(struct device_node *np,
        struct thermal_cooling_device_ops *cooling_ops;
        char *name;
 
+       if (IS_ERR_OR_NULL(policy)) {
+               pr_err("%s: cpufreq policy isn't valid: %p\n", __func__, policy);
+               return ERR_PTR(-EINVAL);
+       }
+
        dev = get_cpu_device(policy->cpu);
        if (unlikely(!dev)) {
                pr_warn("No cpu device for cpu %d\n", policy->cpu);
                return ERR_PTR(-ENODEV);
        }
 
-       if (IS_ERR_OR_NULL(policy)) {
-               pr_err("%s: cpufreq policy isn't valid: %p\n", __func__, policy);
-               return ERR_PTR(-EINVAL);
-       }
-
        i = cpufreq_table_count_valid_entries(policy);
        if (!i) {
                pr_debug("%s: CPUFreq table not found or has no valid entries\n",