Messages in this thread | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCH 1/2] PM / OPP: Assert RCU lock in exported functions | Date | Fri, 30 Jan 2015 01:16:33 +0100 |
| |
On Friday, January 09, 2015 09:27:57 AM Krzysztof Kozlowski wrote: > 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>
Queued up for 3.20, thanks!
> --- > drivers/base/power/opp.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c > index 106c69359306..842d31e24eee 100644 > --- a/drivers/base/power/opp.c > +++ b/drivers/base/power/opp.c > @@ -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__); >
-- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
| |