On Fri, Feb 15, 2008 at 07:48:41AM +0800, Yi Yang wrote: > When one cpu is set to offline, the caller process will hang, according to > the trace data, the problem lies in the refcount error in cpufreq driver, > cpufreq_cpu_callback will wait for completion policy->kobj_unregister > which is nerver completed because a refcount error in function > __cpufreq_remove_dev in file driver/cpufreq/cpufreq.c results in not > calling kobject release method. > > In driver/cpufreq/cpufreq.c, the refcount of data->kobj isn't 1 when it > will be unregistered, this problem didn't exist in 2.6.24 and earlier. > > The root cause is kobject API switch, kobject_init_and_add and kobject_put > replace older kobject_register and kobject_unregister in 2.6.25-rc1, > compared to 2.6.24, kobject_unregister is deleted in function > __cpufreq_remove_dev but it isn't replaced with kobject_put. > > This patch adds kobject_put to balance refcount. I noticed Greg suggests > it will fix a power-off issue to remove kobject_get statement block, but i > think that isn't the best way because those code block has existed very long > and it is helpful because the successive statements are invoking relevant > data. > > > Signed-off-by: Yi Yang <yi.y.yang@xxxxxxxxx> No, the additional kobject_get() needs to be removed. I posted a patch for this last night, and so did someone else earlier at: http://lkml.org/lkml/2008/2/8/342 this patch should not be added, I'll get the other one in instead. thanks, greg k-h _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm