On 2 February 2015 at 09:08, ethan zhao <ethan.zhao@xxxxxxxxxx> wrote:How to prevent the policy to be freed between
I am not saying that the lock is taken between them. But withinWe take cpufreq_driver_lock() here, and so this willNo, there is no cpufreq_driver_lock acquired between
block thread B.
cpufreq_cpu_get() and cpufreq_cpu_put()
cpufreq_cpu_get() to make sure policy doesn't get freed while we
are doing kobject_get().
You are maxing up the water with sand ?What is the current bug you are facing right now, I haven't understood it well.The problem is you are using a rwsem inside policy structure to protect itsbeginning the deference of policy Thread B:I couldn't understand your problem completely. Apart from giving a
... ... __cpufreq_remove_dev_finish()
cpufreq_policy_free(policy);
Perhaps move policy->rwsem out side the policy structure is a way to
avoid
it completely.
and you could stopping the PPC thread stepping forward as my patch as
temporary workaround.
detailed
look of what's going on both threads, always specify where the BUG
actually
is..
assessment, that is bad design.
Also a lock within the structure isn't new. Its all over the kernel. I
don't understand
why you say its a bad design.
--
viresh