From: Viresh Kumar Date: Thu, 5 Nov 2015 08:51:21 +0000 (+0530) Subject: PM / OPP: Add opp_rcu_lockdep_assert() to _find_device_opp() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=0597e818501f595090a49a1779ab6ec377051b11;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git PM / OPP: Add opp_rcu_lockdep_assert() to _find_device_opp() _find_device_opp() should be called with rcu-read lock or dev_opp_list_lock held. Add the opp_rcu_lockdep_assert() check to make sure caller have taken appropriate locks. Fix comment over the routine as well. Suggested-by: Stephen Boyd Signed-off-by: Viresh Kumar Signed-off-by: Rafael J. Wysocki --- diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c index d5f215679820..c987d2e1a83b 100644 --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c @@ -81,14 +81,18 @@ static struct device_opp *_managed_opp(const struct device_node *np) * Return: pointer to 'struct device_opp' if found, otherwise -ENODEV or * -EINVAL based on type of error. * - * Locking: This function must be called under rcu_read_lock(). device_opp - * is a RCU protected pointer. This means that device_opp is valid as long - * as we are under RCU lock. + * Locking: For readers, this function must be called under rcu_read_lock(). + * device_opp is a RCU protected pointer, which means that device_opp is valid + * as long as we are under RCU lock. + * + * For Writers, this function must be called with dev_opp_list_lock held. */ struct device_opp *_find_device_opp(struct device *dev) { struct device_opp *dev_opp; + opp_rcu_lockdep_assert(); + if (IS_ERR_OR_NULL(dev)) { pr_err("%s: Invalid parameters\n", __func__); return ERR_PTR(-EINVAL);