Commit 1e6c3e8f authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull locking fixes from Ingo Molnar:
 "A liblockdep fix and a mutex_unlock() mutex-debugging fix"

* 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  mutex: Always clear owner field upon mutex_unlock()
  tools/liblockdep: Fix debug_check thinko in mutex destroy
parents b800c91a 8e654dd6
...@@ -80,13 +80,13 @@ void debug_mutex_unlock(struct mutex *lock) ...@@ -80,13 +80,13 @@ void debug_mutex_unlock(struct mutex *lock)
DEBUG_LOCKS_WARN_ON(lock->owner != current); DEBUG_LOCKS_WARN_ON(lock->owner != current);
DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next); DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
mutex_clear_owner(lock);
} }
/* /*
* __mutex_slowpath_needs_to_unlock() is explicitly 0 for debug * __mutex_slowpath_needs_to_unlock() is explicitly 0 for debug
* mutexes so that we can do it here after we've verified state. * mutexes so that we can do it here after we've verified state.
*/ */
mutex_clear_owner(lock);
atomic_set(&lock->count, 1); atomic_set(&lock->count, 1);
} }
......
...@@ -317,7 +317,7 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex) ...@@ -317,7 +317,7 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
* *
* TODO: Hook into free() and add that check there as well. * TODO: Hook into free() and add that check there as well.
*/ */
debug_check_no_locks_freed(mutex, mutex + sizeof(*mutex)); debug_check_no_locks_freed(mutex, sizeof(*mutex));
__del_lock(__get_lock(mutex)); __del_lock(__get_lock(mutex));
return ll_pthread_mutex_destroy(mutex); return ll_pthread_mutex_destroy(mutex);
} }
...@@ -341,7 +341,7 @@ int pthread_rwlock_destroy(pthread_rwlock_t *rwlock) ...@@ -341,7 +341,7 @@ int pthread_rwlock_destroy(pthread_rwlock_t *rwlock)
{ {
try_init_preload(); try_init_preload();
debug_check_no_locks_freed(rwlock, rwlock + sizeof(*rwlock)); debug_check_no_locks_freed(rwlock, sizeof(*rwlock));
__del_lock(__get_lock(rwlock)); __del_lock(__get_lock(rwlock));
return ll_pthread_rwlock_destroy(rwlock); return ll_pthread_rwlock_destroy(rwlock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment