From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Torokhov Subject: [PATCH] cpufreq: imx6: prorect calls to dev_pm_opp_get_opp_count with RCU lock Date: Mon, 15 Dec 2014 16:50:48 -0800 Message-ID: <20141216005048.GA3802@dtor-ws> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org To: "Rafael J. Wysocki" Cc: Viresh Kumar , Shawn Guo , Philipp Zabel , Anson Huang , John Tobias , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-pm@vger.kernel.org dev_pm_opp_get_opp_count() must be called with RCU lock held. Signed-off-by: Dmitry Torokhov --- Not tested at all... drivers/cpufreq/imx6q-cpufreq.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/cpufreq/imx6q-cpufreq.c b/drivers/cpufreq/imx6q-cpufreq.c index 380a90d..851d4fd 100644 --- a/drivers/cpufreq/imx6q-cpufreq.c +++ b/drivers/cpufreq/imx6q-cpufreq.c @@ -200,7 +200,9 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) * Just, incase the platform did not supply the OPP * table, it will try to get it. */ + rcu_read_lock(); num = dev_pm_opp_get_opp_count(cpu_dev); + rcu_read_unlock(); if (num < 0) { ret = of_init_opp_table(cpu_dev); if (ret < 0) { @@ -211,7 +213,9 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) /* Because we have added the OPPs here, we must free them */ free_opp = true; + rcu_read_lock(); num = dev_pm_opp_get_opp_count(cpu_dev); + rcu_read_unlock(); if (num < 0) { ret = num; dev_err(cpu_dev, "no OPP table is found: %d\n", ret); -- 2.2.0.rc0.207.ga3a616c -- Dmitry