Re: [PATCH][next] cpufreq: powernow-k8: add null check to policy to avoid null pointer dereference

From: Viresh Kumar
Date: Mon Jan 04 2021 - 22:54:51 EST


On 04-01-21, 13:02, Colin King wrote:
> From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>
> Currently there is an unlikely case where cpufreq_cpu_get returns a
> null policy and this will cause a null pointer dereference later on.
> Fix this by adding a null check and adding an error return.
>
> Addresses-Coverity: ("Dereference null return")
> Fixes: b43a7ffbf33b ("cpufreq: Notify all policy->cpus in cpufreq_notify_transition()")
> Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx>
> ---
> drivers/cpufreq/powernow-k8.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
> index 0acc9e241cd7..c5368545ba1f 100644
> --- a/drivers/cpufreq/powernow-k8.c
> +++ b/drivers/cpufreq/powernow-k8.c
> @@ -913,6 +913,8 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data,

The caller already has a pointer to the policy, you should rather pass
that here instead of doing cpufreq_cpu_get/put.

> freqs.new = find_khz_freq_from_fid(fid);
>
> policy = cpufreq_cpu_get(smp_processor_id());
> + if (!policy)
> + return 1;
> cpufreq_cpu_put(policy);
>
> cpufreq_freq_transition_begin(policy, &freqs);
> --
> 2.29.2

--
viresh