mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 07:31:45 +00:00
PM / OPP: Assert RCU lock in exported functions
Add lockdep asserts for holding the RCU lock when calling dev_pm_opp_get_freq() and dev_pm_opp_get_voltage() to aid in detecting RCU misuses. These are called often after dev_pm_opp_find_freq_ceil/exact() which already asserts for RCU lock. However one could make an error by releasing lock too early - just after dev_pm_opp_find_freq_ceil(). Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
984f16c849
commit
04bf1c7f76
@ -169,6 +169,8 @@ unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
|
||||
struct dev_pm_opp *tmp_opp;
|
||||
unsigned long v = 0;
|
||||
|
||||
opp_rcu_lockdep_assert();
|
||||
|
||||
tmp_opp = rcu_dereference(opp);
|
||||
if (unlikely(IS_ERR_OR_NULL(tmp_opp)) || !tmp_opp->available)
|
||||
pr_err("%s: Invalid parameters\n", __func__);
|
||||
@ -199,6 +201,8 @@ unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
|
||||
struct dev_pm_opp *tmp_opp;
|
||||
unsigned long f = 0;
|
||||
|
||||
opp_rcu_lockdep_assert();
|
||||
|
||||
tmp_opp = rcu_dereference(opp);
|
||||
if (unlikely(IS_ERR_OR_NULL(tmp_opp)) || !tmp_opp->available)
|
||||
pr_err("%s: Invalid parameters\n", __func__);
|
||||
|
Loading…
Reference in New Issue
Block a user