From be29c5504d786051c4aa9ff05ddeba2e853b500d Mon Sep 17 00:00:00 2001 From: Rajendra Nayak Date: Tue, 28 Jun 2011 18:22:04 -0700 Subject: OMAP: powerdomain: lock spinlock around plist_add/plist_del The spinlock to guard wakeuplat_dev_list is defined but unused. Not locking it for plist_add and plist_del operations causes WARN;s with CONFIG_DEBUG_PI_LIST=y. Reported-by: Nishanth Menon Signed-off-by: Rajendra Nayak --- arch/arm/mach-omap2/powerdomain.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'arch/arm') diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 71d9b75..56aee28 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -1089,7 +1089,9 @@ int pwrdm_wakeuplat_set_constraint (struct powerdomain *pwrdm, } plist_node_init(&user->node, t); + spin_lock(&pwrdm->wakeuplat_lock); plist_add(&user->node, &pwrdm->wakeuplat_dev_list); + spin_unlock(&pwrdm->wakeuplat_lock); user->node.prio = user->constraint_us = t; ret = pwrdm_wakeuplat_update_pwrst(pwrdm); @@ -1136,7 +1138,9 @@ int pwrdm_wakeuplat_release_constraint (struct powerdomain *pwrdm, goto exit_rls; } + spin_lock(&pwrdm->wakeuplat_lock); plist_del(&user->node, &pwrdm->wakeuplat_dev_list); + spin_unlock(&pwrdm->wakeuplat_lock); kfree(user); ret = pwrdm_wakeuplat_update_pwrst(pwrdm); -- cgit v1.1