瀏覽代碼

ARM: OMAP: add RCU locking to omap2_set_init_voltage.

opp_find_freq_ceil and opp_get_voltage are documented as requiring
rcu_lock to be held.  So hold it.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Kevin Hilman <khilman@ti.com>
NeilBrown 13 年之前
父節點
當前提交
6369fd41fc
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      arch/arm/mach-omap2/pm.c

+ 3 - 0
arch/arm/mach-omap2/pm.c

@@ -174,14 +174,17 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
 	freq = clk->rate;
 	freq = clk->rate;
 	clk_put(clk);
 	clk_put(clk);
 
 
+	rcu_read_lock();
 	opp = opp_find_freq_ceil(dev, &freq);
 	opp = opp_find_freq_ceil(dev, &freq);
 	if (IS_ERR(opp)) {
 	if (IS_ERR(opp)) {
+		rcu_read_unlock();
 		pr_err("%s: unable to find boot up OPP for vdd_%s\n",
 		pr_err("%s: unable to find boot up OPP for vdd_%s\n",
 			__func__, vdd_name);
 			__func__, vdd_name);
 		goto exit;
 		goto exit;
 	}
 	}
 
 
 	bootup_volt = opp_get_voltage(opp);
 	bootup_volt = opp_get_voltage(opp);
+	rcu_read_unlock();
 	if (!bootup_volt) {
 	if (!bootup_volt) {
 		pr_err("%s: unable to find voltage corresponding "
 		pr_err("%s: unable to find voltage corresponding "
 			"to the bootup OPP for vdd_%s\n", __func__, vdd_name);
 			"to the bootup OPP for vdd_%s\n", __func__, vdd_name);