From: Viresh Kumar Date: Thu, 27 Nov 2014 03:24:07 +0000 (+0530) Subject: PM / OPP replace kfree_rcu() with call_srcu() in opp_set_availability() X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b4037aaa584bd914bbf578f5ceb2d9884fa7ddb6;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git PM / OPP replace kfree_rcu() with call_srcu() in opp_set_availability() This existed before we introduced call_srcu() in opp layer to synchronize with srcu_notifier_call_chain() while removing OPPs. And is a potential bug which wasn't noticed earlier. Let fix it as well by using the right API to free OPP. Signed-off-by: Viresh Kumar Signed-off-by: Rafael J. Wysocki --- diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c index 977474a3c64f..2d195f3a1998 100644 --- a/drivers/base/power/opp.c +++ b/drivers/base/power/opp.c @@ -641,7 +641,7 @@ static int opp_set_availability(struct device *dev, unsigned long freq, list_replace_rcu(&opp->node, &new_opp->node); mutex_unlock(&dev_opp_list_lock); - kfree_rcu(opp, rcu_head); + call_srcu(&dev_opp->srcu_head.srcu, &opp->rcu_head, kfree_opp_rcu); /* Notify the change of the OPP availability */ if (availability_req)