From e8ff46dd7e0f7a787af16ca39d0594c3be2f8859 Mon Sep 17 00:00:00 2001 From: Jon Medhurst Date: Fri, 20 Jul 2012 11:53:56 +0100 Subject: cpufreq: vexpress: Safely handle missing CPU frequencies If there are no CPU frequencies in the device tree for the current cluster, then vexpress_cpufreq_of_init() passes a null pointer to cpufreq_frequency_table_cpuinfo(), which it then dereferences. This patch tests for this situation and cleanly returns and error instead. Signed-off-by: Jon Medhurst --- drivers/cpufreq/vexpress_bL_cpufreq.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/cpufreq/vexpress_bL_cpufreq.c b/drivers/cpufreq/vexpress_bL_cpufreq.c index 88ac95ef85c..1fffaef366a 100644 --- a/drivers/cpufreq/vexpress_bL_cpufreq.c +++ b/drivers/cpufreq/vexpress_bL_cpufreq.c @@ -214,6 +214,9 @@ static int vexpress_cpufreq_init(struct cpufreq_policy *policy) if (atomic_inc_return(&freq_table_users) == 1) result = vexpress_cpufreq_of_init(); + if (freq_table[cur_cluster] == NULL) + result = -ENODATA; + if (result) { atomic_dec_return(&freq_table_users); pr_err("CPUFreq - CPU %d failed to initialize\n", policy->cpu); -- cgit v1.2.3