summaryrefslogtreecommitdiffstats
path: root/lib/libthr/thread/thr_mutex.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2015-02-25 16:12:56 +0000
committerkib <kib@FreeBSD.org>2015-02-25 16:12:56 +0000
commit2c8adee420d1fc852b5b84bc6acd1d0bf205b83f (patch)
treea71279b2126114fbf419f6ad617499beee5d06d8 /lib/libthr/thread/thr_mutex.c
parent298cb69513578e15a5a8a0fd5dced4df2188db65 (diff)
downloadFreeBSD-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
OpenPOWER on IntegriCloud