From nobody Wed Oct 07 17:14:19 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4j0KVN3554z6wC5D for ; Wed, 07 Oct 2026 17:14:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j0KVN02sWz4chb for ; Wed, 07 Oct 2026 17:14:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791393260; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kuc8r2fw/nPsYL4X0MZRM7wa0qaZQa7Zjf7tOgQ3SMA=; b=wv+cCIFMES5TtnCBw+Q3OARSi2HxR+3VnoXCeoip682A1BnlJHmdsF7y/I0O0BqFwVsncD Iu2AA9xNVvo/qZITOvq/U1e0D2I0FHuChjMVeXBHeuw/ROBpvA9prr5btntl0Bzw86bFfZ VYlBbvLCaa/d7I+WAOMRixCgJE3YLAc9ULtwJKJeVIutER/dVKbaCfs9XvuNRfFa1CLsPO 9YgmW6SJJnmnKcMZvHvjBhX+9z5MJRmL11oTO6pZ9CC07XOg+3Sb3zioZsho8fkn9XHLpl neF5Zk7Ex7qjf2KKsrqZ9cd181vQMQm6CrvS9x/cN+Qw9Zhd3mQEGH6v6ZsWZw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791393260; b=MEDxeFHTvQcjGgh4lJNsY/B7dY7Rx52ydz7LD1d0i1JQ+doWzoy3WdO7EuYUDLhvuRyvPs ET0iJ5DQvqrjCQbs8v9/RN9l24+wOkXHeiwKgbZ3vwh8jS+9rUT90bXRr3KxSHetv5UZgD qnCb/8H06mAVO3QSfHvp+Q05VtVFsmynzxPxNgtiupwEsYUQOkPjeSujK5lQdc6eMtthsU fVNXD4GcTrh28K8K3om76ZRpn82gwrN6lWy3MGAikXoany/nzvdqhouvBU8Pa6quEKb01t fjLIzcGk3gIkPuwnrdFod0ByEO1e6D6MfDNSHXHPkxqL/7N+ztZ+AfMdcLLLKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791393260; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kuc8r2fw/nPsYL4X0MZRM7wa0qaZQa7Zjf7tOgQ3SMA=; b=TOnDtosqnJlrttCCn2qv8m0vKQFoYn43UykS5ZfSECAGRYq94Z91iuOM8sYF9GfsL6FbrH GbhaD9GLBw/9Wqv9UOEKW5tIM+IELs+zLGBlINhJy6koYn4AnUj1plesSdWbD49i4Bt2wc MJXnYLvp/GEdl2k5yIC7JLV9r9rlkkh32jNpsS4j6Khp38mvnOc1aGdTKpc/cUqMRHN5rV BM/JiZod+BWgM38cTaHbv6yc9/Tvk7rfEgd953z2994tLYUzj9wt00IKEF6wxmDNv1IAnR J0Tzq7+FF4mUXWgd8xz77Nt+qsG9t7dxdF7OdiFiJ0xY0o8FPUuej2TKiUgEmQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j0KVM6CVqz12km for ; Wed, 07 Oct 2026 17:14:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39155 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 07 Oct 2026 17:14:19 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: ShengYi Hung Subject: git: de2c0f157a9c - main - libthr: Fix some bugs in trylock List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: aokblast X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: de2c0f157a9cce0b763da9ae97ada870fa4d1824 Auto-Submitted: auto-generated Date: Wed, 07 Oct 2026 17:14:19 +0000 Message-Id: <6ac67deb.39155.27c54888@gitrepo.freebsd.org> The branch main has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=de2c0f157a9cce0b763da9ae97ada870fa4d1824 commit de2c0f157a9cce0b763da9ae97ada870fa4d1824 Author: ShengYi Hung AuthorDate: 2026-10-07 02:30:48 +0000 Commit: ShengYi Hung CommitDate: 2026-10-07 17:14:04 +0000 libthr: Fix some bugs in trylock 1. When contester > 2, a release causes kernel set CONTENTION bit but with no owner. In this case, the userspace should be able to try the lock instead of fall immediately. We copy this from trylock2. 2. A PI mutex should consult to kernel instead of decided by userspace itself. Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D60427 --- lib/libthr/thread/thr_umtx.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/libthr/thread/thr_umtx.h b/lib/libthr/thread/thr_umtx.h index 4e1c08ca64e8..eada8ab9297f 100644 --- a/lib/libthr/thread/thr_umtx.h +++ b/lib/libthr/thread/thr_umtx.h @@ -82,13 +82,19 @@ _thr_umutex_trylock(struct umutex *mtx, uint32_t id) if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_UNOWNED, id)) return (0); + if ((uint32_t)mtx->m_owner == UMUTEX_CONTESTED && + __predict_true((mtx->m_flags & (UMUTEX_PRIO_PROTECT | + UMUTEX_PRIO_INHERIT)) == 0) && + atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_CONTESTED, + id | UMUTEX_CONTESTED)) + return (0); if (__predict_false((uint32_t)mtx->m_owner == UMUTEX_RB_OWNERDEAD) && atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_RB_OWNERDEAD, id | UMUTEX_CONTESTED)) return (EOWNERDEAD); if (__predict_false((uint32_t)mtx->m_owner == UMUTEX_RB_NOTRECOV)) return (ENOTRECOVERABLE); - if ((mtx->m_flags & UMUTEX_PRIO_PROTECT) == 0) + if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) == 0) return (EBUSY); return (__thr_umutex_trylock(mtx)); }