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
This commit is contained in:
Коммит
1e6c3e8f8f
|
@ -80,13 +80,13 @@ void debug_mutex_unlock(struct mutex *lock)
|
|||
DEBUG_LOCKS_WARN_ON(lock->owner != current);
|
||||
|
||||
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
|
||||
* mutexes so that we can do it here after we've verified state.
|
||||
*/
|
||||
mutex_clear_owner(lock);
|
||||
atomic_set(&lock->count, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -317,7 +317,7 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
|
|||
*
|
||||
* 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));
|
||||
return ll_pthread_mutex_destroy(mutex);
|
||||
}
|
||||
|
@ -341,7 +341,7 @@ int pthread_rwlock_destroy(pthread_rwlock_t *rwlock)
|
|||
{
|
||||
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));
|
||||
return ll_pthread_rwlock_destroy(rwlock);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче