On Saturday, August 03, 2013 05:19:26 PM Viresh Kumar wrote: > Governor's owner refcount usage was broken. We should increment refcount only > when CPUFREQ_GOV_POLICY_INIT event has come and should decrement only if > CPUFREQ_GOV_POLICY_EXIT has come. > > Lets fix it. OK, and what happens if we don't fix it? Rafael > Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx> > --- > drivers/cpufreq/cpufreq.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > index e9b969f..74d4969 100644 > --- a/drivers/cpufreq/cpufreq.c > +++ b/drivers/cpufreq/cpufreq.c > @@ -1707,8 +1707,9 @@ static int __cpufreq_governor(struct cpufreq_policy *policy, > } > } > > - if (!try_module_get(policy->governor->owner)) > - return -EINVAL; > + if (event == CPUFREQ_GOV_POLICY_INIT) > + if (!try_module_get(policy->governor->owner)) > + return -EINVAL; > > pr_debug("__cpufreq_governor for CPU %u, event %u\n", > policy->cpu, event); > @@ -1717,6 +1718,8 @@ static int __cpufreq_governor(struct cpufreq_policy *policy, > if ((!policy->governor_enabled && (event == CPUFREQ_GOV_STOP)) || > (policy->governor_enabled && (event == CPUFREQ_GOV_START))) { > mutex_unlock(&cpufreq_governor_lock); > + if (event == CPUFREQ_GOV_POLICY_INIT) > + module_put(policy->governor->owner); > return -EBUSY; > } > > @@ -1744,11 +1747,8 @@ static int __cpufreq_governor(struct cpufreq_policy *policy, > mutex_unlock(&cpufreq_governor_lock); > } > > - /* we keep one module reference alive for > - each CPU governed by this CPU */ > - if ((event != CPUFREQ_GOV_START) || ret) > - module_put(policy->governor->owner); > - if ((event == CPUFREQ_GOV_STOP) && !ret) > + if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) || > + ((event == CPUFREQ_GOV_POLICY_EXIT) && !ret)) > module_put(policy->governor->owner); > > return ret; > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe cpufreq" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html