summaryrefslogtreecommitdiffstats
path: root/drivers/base/power
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2014-11-27 04:24:07 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-11-29 23:53:20 +0100
commitb4037aaa584bd914bbf578f5ceb2d9884fa7ddb6 (patch)
tree43ce804178e162d5d57922194483adaacc79a76b /drivers/base/power
parentPM / OPP Introduce APIs to remove OPPs (diff)
downloadlinux-b4037aaa584bd914bbf578f5ceb2d9884fa7ddb6.tar.xz
linux-b4037aaa584bd914bbf578f5ceb2d9884fa7ddb6.zip
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 <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/base/power')
-rw-r--r--drivers/base/power/opp.c2
1 files changed, 1 insertions, 1 deletions
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)