Messages in this thread Patch in this message | | | From | Aleksandr Mishin <> | Subject | [PATCH] cppc_cpufreq: Fix possible null pointer dereference | Date | Fri, 5 Apr 2024 12:40:05 +0300 |
| |
cppc_cpufreq_get_rate() and hisi_cppc_cpufreq_get_rate() can be called from different places with various parameters. So cpufreq_cpu_get() can return null as 'policy' in some circumstances. Fix this bug by adding null return check.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: a28b2bfc099c ("cppc_cpufreq: replace per-cpu data array with a list") Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru> --- drivers/cpufreq/cppc_cpufreq.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c index 64420d9cfd1e..5f7e04e8497b 100644 --- a/drivers/cpufreq/cppc_cpufreq.c +++ b/drivers/cpufreq/cppc_cpufreq.c @@ -741,6 +741,9 @@ static unsigned int cppc_cpufreq_get_rate(unsigned int cpu) { struct cppc_perf_fb_ctrs fb_ctrs_t0 = {0}, fb_ctrs_t1 = {0}; struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); + if (!policy) + return -ENODEV; + struct cppc_cpudata *cpu_data = policy->driver_data; u64 delivered_perf; int ret; @@ -822,6 +825,9 @@ static struct cpufreq_driver cppc_cpufreq_driver = { static unsigned int hisi_cppc_cpufreq_get_rate(unsigned int cpu) { struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); + if (!policy) + return -ENODEV; + struct cppc_cpudata *cpu_data = policy->driver_data; u64 desired_perf; int ret; -- 2.30.2
| |