Messages in this thread | | | Date | Thu, 11 Feb 2016 01:59:24 +0100 | Subject | Re: [PATCH V4 1/7] cpufreq: Merge cpufreq_offline_prepare/finish routines | From | "Rafael J. Wysocki" <> |
| |
On Tue, Feb 9, 2016 at 4:46 AM, Viresh Kumar <viresh.kumar@linaro.org> wrote: > The offline routine was separated into two halves earlier by > 'commit 1aee40ac9c86 ("cpufreq: Invoke __cpufreq_remove_dev_finish() > after releasing cpu_hotplug.lock");. > > And the reasons cited were, race issues between accessing policy's sysfs > files and policy kobject's cleanup. > > That race isn't valid anymore, as we don't remove the policy & its > kobject completely on hotplugs, but do that from ->remove() callback of > subsys framework.
Governor sysfs attributes are still removed in __cpufreq_governor(_EXIT), though, so had store() been used for them, the deadlock described in the changelog of commit 1aee40ac9c86 would have been possible.
Fortunately, we don't use store() (which still does get_online_cpus()) for those attributes now. We use governor_store() for them and that doesn't call get_online_cpus(). So in fact this patch is only correct after the recent rework of the governor attributes handling.
Please modify the changelog to explain that more thoroughly.
Thanks, Rafael
| |