[PATCH] opp: convert dev_warn() to dev_dbg() for duplicate OPPs
Viresh Kumar
viresh.kumar at linaro.org
Mon Nov 24 02:40:00 PST 2014
On 21 November 2014 at 21:28, Rafael J. Wysocki <rjw at rjwysocki.net> wrote:
> What about @dynamic instead of @from_dt? That may apply to more use cases if
> need be.
@Paul: I am stuck at a point and need help on RCUs :)
File: drivers/base/power/opp.c
We are trying to remove OPPs created from static data present in DT on
cpufreq driver's removal (when configured as module).
opp core uses RCUs internally and it looks like I need to implement:
list_for_each_entry_safe_rcu()
But, I am not sure because of these:
http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-10/6280.html
http://patchwork.ozlabs.org/patch/48989/
So, wanted to ask you if I really need that or the OPP code is
buggy somewhere.
The code removing OPPs is:
list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) {
srcu_notifier_call_chain(&dev_opp->head, OPP_EVENT_REMOVE, opp);
list_del_rcu(&opp->node);
kfree(opp);
}
Because we are freeing opp at the end, list_for_each_entry_rcu()
is trying to read the already freed opp to find opp->node.next
and that results in a crash.
What am I doing wrong ?
--
viresh
More information about the linux-arm-kernel
mailing list