svn commit: r310016 - stable/11/lib/libthr/thread
Konstantin Belousov
kib at FreeBSD.org
Tue Dec 13 09:43:51 UTC 2016
Author: kib
Date: Tue Dec 13 09:43:49 2016
New Revision: 310016
URL: https://svnweb.freebsd.org/changeset/base/310016
Log:
MFC r309630:
Do not leak curthread->inact_mtx when cancelling in pthread_cond_wait(3).
Modified:
stable/11/lib/libthr/thread/thr_cond.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/lib/libthr/thread/thr_cond.c
==============================================================================
--- stable/11/lib/libthr/thread/thr_cond.c Tue Dec 13 09:17:30 2016 (r310015)
+++ stable/11/lib/libthr/thread/thr_cond.c Tue Dec 13 09:43:49 2016 (r310016)
@@ -224,16 +224,26 @@ cond_wait_kernel(struct pthread_cond *cv
* state and unlock the mutex without making the state
* consistent and the state will be unrecoverable.
*/
- if (error2 == 0 && cancel)
+ if (error2 == 0 && cancel) {
+ if (robust) {
+ _mutex_leave_robust(curthread, mp);
+ robust = false;
+ }
_thr_testcancel(curthread);
+ }
if (error == EINTR)
error = 0;
} else {
/* We know that it didn't unlock the mutex. */
_mutex_cv_attach(mp, recurse);
- if (cancel)
+ if (cancel) {
+ if (robust) {
+ _mutex_leave_robust(curthread, mp);
+ robust = false;
+ }
_thr_testcancel(curthread);
+ }
error2 = 0;
}
if (robust)
More information about the svn-src-all
mailing list