diff options
Diffstat (limited to 'kernel/locking/mutex-debug.c')
| -rw-r--r-- | kernel/locking/mutex-debug.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/kernel/locking/mutex-debug.c b/kernel/locking/mutex-debug.c index e1191c996c59..5cf6731b98e9 100644 --- a/kernel/locking/mutex-debug.c +++ b/kernel/locking/mutex-debug.c | |||
| @@ -71,18 +71,17 @@ void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, | |||
| 71 | 71 | ||
| 72 | void debug_mutex_unlock(struct mutex *lock) | 72 | void debug_mutex_unlock(struct mutex *lock) |
| 73 | { | 73 | { |
| 74 | if (unlikely(!debug_locks)) | 74 | if (likely(debug_locks)) { |
| 75 | return; | 75 | DEBUG_LOCKS_WARN_ON(lock->magic != lock); |
| 76 | 76 | ||
| 77 | DEBUG_LOCKS_WARN_ON(lock->magic != lock); | 77 | if (!lock->owner) |
| 78 | DEBUG_LOCKS_WARN_ON(!lock->owner); | ||
| 79 | else | ||
| 80 | DEBUG_LOCKS_WARN_ON(lock->owner != current); | ||
| 78 | 81 | ||
| 79 | if (!lock->owner) | 82 | DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next); |
| 80 | DEBUG_LOCKS_WARN_ON(!lock->owner); | 83 | mutex_clear_owner(lock); |
| 81 | else | 84 | } |
| 82 | DEBUG_LOCKS_WARN_ON(lock->owner != current); | ||
| 83 | |||
| 84 | DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next); | ||
| 85 | mutex_clear_owner(lock); | ||
| 86 | 85 | ||
| 87 | /* | 86 | /* |
| 88 | * __mutex_slowpath_needs_to_unlock() is explicitly 0 for debug | 87 | * __mutex_slowpath_needs_to_unlock() is explicitly 0 for debug |
