From owner-svn-src-stable-11@freebsd.org Tue Dec 13 09:43:50 2016 Return-Path: Delivered-To: svn-src-stable-11@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D9657C6BF39; Tue, 13 Dec 2016 09:43:50 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A7D49165F; Tue, 13 Dec 2016 09:43:50 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id uBD9hncd041647; Tue, 13 Dec 2016 09:43:49 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id uBD9hnCN041646; Tue, 13 Dec 2016 09:43:49 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201612130943.uBD9hnCN041646@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 13 Dec 2016 09:43:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r310016 - stable/11/lib/libthr/thread X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-11@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for only the 11-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Dec 2016 09:43:51 -0000 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)