From a314e4b89434cedf1dfc3ea949249cc86b7107fc Mon Sep 17 00:00:00 2001 From: Jagadeesh Kona Date: Mon, 14 Sep 2020 10:03:57 +0530 Subject: [PATCH] cpufreq: qcom-cpufreq-hw: Fix possible NULL pointer dereferences Add checks to properly handle and fix possible NULL pointer dereferences and avoid usage of uninitialized variables. Change-Id: I30f1b13ee4988286fbd1856f823858dee81fe5a3 Signed-off-by: Jagadeesh Kona --- drivers/cpufreq/qcom-cpufreq-hw.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index 9ecc76b23d5f..6da7a797b41e 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -407,6 +407,8 @@ static int qcom_cpufreq_hw_read_lut(struct platform_device *pdev, cpu = cpumask_first(&c->related_cpus); + prev_cc = 0; + for (i = 0; i < lut_max_entries; i++) { data = readl_relaxed(c->base + offsets[REG_FREQ_LUT] + i * lut_row_size); @@ -440,11 +442,15 @@ static int qcom_cpufreq_hw_read_lut(struct platform_device *pdev, prev_cc = core_count; prev_freq = freq; - dev_pm_opp_add(get_cpu_device(cpu), freq * 1000, volt); + if (get_cpu_device(cpu)) + dev_pm_opp_add(get_cpu_device(cpu), freq * 1000, volt); } c->table[i].frequency = CPUFREQ_TABLE_END; - dev_pm_opp_set_sharing_cpus(get_cpu_device(cpu), &c->related_cpus); + + if (get_cpu_device(cpu)) + dev_pm_opp_set_sharing_cpus(get_cpu_device(cpu), + &c->related_cpus); return 0; }