diff options
author | kib <kib@FreeBSD.org> | 2015-02-25 16:12:56 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-02-25 16:12:56 +0000 |
commit | 2c8adee420d1fc852b5b84bc6acd1d0bf205b83f (patch) | |
tree | a71279b2126114fbf419f6ad617499beee5d06d8 /lib/libthr/thread/thr_mutex.c | |
parent | 298cb69513578e15a5a8a0fd5dced4df2188db65 (diff) | |
download | FreeBSD-src-2c8adee420d1fc852b5b84bc6acd1d0bf205b83f.zip FreeBSD-src-2c8adee420d1fc852b5b84bc6acd1d0bf205b83f.tar.gz |
When unlocking a contested PI pthread mutex, if the queue of waiters
is empty, look up the umtx_pi and disown it if the current thread owns it.
This can happen if a signal or timeout removed the last waiter from
the queue, but there is still a thread in do_lock_pi() holding a reference
on the umtx_pi. The unlocking thread might not own the umtx_pi in this case,
but if it does, it must disown it to keep the ownership consistent between
the umtx_pi and the umutex.
Submitted by: Eric van Gyzen <eric_van_gyzen@dell.com>
with advice from: Elliott Rabe and Jim Muchow, also at Dell Inc.
Obtained from: Dell Inc.
PR: 198914
Diffstat (limited to 'lib/libthr/thread/thr_mutex.c')
0 files changed, 0 insertions, 0 deletions