{
        struct cppc_perf_fb_ctrs fb_ctrs_t0 = {0}, fb_ctrs_t1 = {0};
        struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       struct cppc_cpudata *cpu_data = policy->driver_data;
+       struct cppc_cpudata *cpu_data;
        u64 delivered_perf;
        int ret;
 
+       if (!policy)
+               return -ENODEV;
+
+       cpu_data = policy->driver_data;
+
        cpufreq_cpu_put(policy);
 
        ret = cppc_get_perf_ctrs(cpu, &fb_ctrs_t0);
 static unsigned int hisi_cppc_cpufreq_get_rate(unsigned int cpu)
 {
        struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
-       struct cppc_cpudata *cpu_data = policy->driver_data;
+       struct cppc_cpudata *cpu_data;
        u64 desired_perf;
        int ret;
 
+       if (!policy)
+               return -ENODEV;
+
+       cpu_data = policy->driver_data;
+
        cpufreq_cpu_put(policy);
 
        ret = cppc_get_desired_perf(cpu, &desired_perf);