power: Prevent spinlock recursion when wake_unlock() is called

Signed-off-by: Mike Chan <mike@android.com>
(cherry picked from commit 97a0a74383d19a1a43ffca81271894ba3edc07b6)
This commit is contained in:
Mike Chan 2009-08-25 18:10:32 -07:00 committed by Stephen Boyd
parent 75880a8986
commit 714fdaf2e8

View file

@ -211,13 +211,13 @@ static void expire_wake_lock(struct wake_lock *lock)
pr_info("expired wake lock %s\n", lock->name);
}
/* Caller must acquire the list_lock spinlock */
static void print_active_locks(int type)
{
unsigned long irqflags;
struct wake_lock *lock;
BUG_ON(type >= WAKE_LOCK_TYPE_COUNT);
spin_lock_irqsave(&list_lock, irqflags);
list_for_each_entry(lock, &active_wake_locks[type], link) {
if (lock->flags & WAKE_LOCK_AUTO_EXPIRE) {
long timeout = lock->expires - jiffies;
@ -229,7 +229,6 @@ static void print_active_locks(int type)
} else
pr_info("active wake lock %s\n", lock->name);
}
spin_unlock_irqrestore(&list_lock, irqflags);
}
static long has_wake_lock_locked(int type)
@ -386,9 +385,9 @@ static void expire_wake_locks(unsigned long data)
unsigned long irqflags;
if (debug_mask & DEBUG_EXPIRE)
pr_info("expire_wake_locks: start\n");
spin_lock_irqsave(&list_lock, irqflags);
if (debug_mask & DEBUG_SUSPEND)
print_active_locks(WAKE_LOCK_SUSPEND);
spin_lock_irqsave(&list_lock, irqflags);
has_lock = has_wake_lock_locked(WAKE_LOCK_SUSPEND);
if (debug_mask & DEBUG_EXPIRE)
pr_info("expire_wake_locks: done, has_lock %ld\n", has_lock);