diff mbox

[V3,02/16] cpufreq: stats: return -EEXIST when stats are already allocated

Message ID 4612a6b926f3e1064093e4f79eaabd48fe4dcdf1.1420558386.git.viresh.kumar@linaro.org
State New
Headers show

Commit Message

Viresh Kumar Jan. 6, 2015, 3:39 p.m. UTC
__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. Its 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>
---
 drivers/cpufreq/cpufreq_stats.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff mbox

Patch

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)
 	if (unlikely(!table))
 		return 0;
 
+	/* stats already initialized */
 	if (per_cpu(cpufreq_stats_table, cpu))
-		return -EBUSY;
+		return -EEXIST;
+
 	stat = kzalloc(sizeof(*stat), GFP_KERNEL);
 	if ((stat) == NULL)
 		return -ENOMEM;