aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-01-06 10:39:01 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-01-23 17:06:43 -0500
commitb8c674482f3cd0d93d07dbc2518cc96c3cc24ed0 (patch)
treeae16c4a368f9a647e16d0b6f316402c6f8032fd1
parent00d0b29472d1605851c12c77aaa3664413a71fbf (diff)
cpufreq: stats: return -EEXIST when stats are already allocated
__cpufreq_stats_create_table() is called from: - cpufreq notifier on creation of a new policy. Stats will always be NULL here. - cpufreq_stats_init() for all CPUs as cpufreq-stats might have been initialized after cpufreq driver. For any policy, 'stats' will be NULL for the first CPU only and will be valid for all other CPUs managed by the same policy. While we return for other CPUs, we don't return the right error value. It's not that we would fail with -EBUSY. But generally, this is what these return values mean: - EBUSY: we are busy right now, try again. And the retry attempt might be immediate. - EEXIST: We already have what you are trying to create and there is no need to create it again, and so no more tries are required. Reviewed-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/cpufreq/cpufreq_stats.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
index 80801f880dd8..d2299ca2fc2c 100644
--- a/drivers/cpufreq/cpufreq_stats.c
+++ b/drivers/cpufreq/cpufreq_stats.c
@@ -192,8 +192,10 @@ static int __cpufreq_stats_create_table(struct cpufreq_policy *policy)
192 if (unlikely(!table)) 192 if (unlikely(!table))
193 return 0; 193 return 0;
194 194
195 /* stats already initialized */
195 if (per_cpu(cpufreq_stats_table, cpu)) 196 if (per_cpu(cpufreq_stats_table, cpu))
196 return -EBUSY; 197 return -EEXIST;
198
197 stat = kzalloc(sizeof(*stat), GFP_KERNEL); 199 stat = kzalloc(sizeof(*stat), GFP_KERNEL);
198 if ((stat) == NULL) 200 if ((stat) == NULL)
199 return -ENOMEM; 201 return -ENOMEM;