On 2015/2/2 12:09, Viresh Kumar wrote:
On 2 February 2015 at 09:36, ethan zhao ethan.zhao@oracle.com wrote:
Is that an idea it supposed to be or fact ?
if (!cpufreq_suspended) cpufreq_policy_free(policy);
static void cpufreq_policy_free(struct cpufreq_policy *policy) { free_cpumask_var(policy->related_cpus); free_cpumask_var(policy->cpus); kfree(policy); }
It seems you just think about it ideally in mind.
We am talking about the policy allocation and de-allocation. right ? I showed you the cpufreq_policy_free(policy) doesn't check kobject refcount as above.
Hmmm, you are still sleeping in the kobject, wake up and don't mix water anymore.
Thanks, Ethan
if (!cpufreq_suspended) cpufreq_policy_put_kobj(policy);
static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy) { ...
kobject_put(kobj); /* * We need to make sure that the underlying kobj is * actually not referenced anymore by anybody before we * proceed with unloading. */ pr_debug("waiting for dropping of refcount\n"); wait_for_completion(cmp);
}