From nobody Sun Nov 01 22:08:40 2026 X-Original-To: dev-commits-src-branches@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 4jHprS4L63z6y2qW for ; Sun, 01 Nov 2026 22:08:40 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jHprS3967z4jvh for ; Sun, 01 Nov 2026 22:08:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793570920; 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=tFOVBpo8yUN647okLBYY6UeFmCvieWL6KnA/3APbLCI=; b=e9p7F9x/JxSAtbPhjpkLvKl//e4+y0Sh0iJmogF0a6xDozVPUgLTpAhZPR4SB/QvH0Rxjo TrQ5tfNNFoKrBtbG9JVeckgPef+eV+ShaG0iKMg+6ltbvB3Eyj2vCUlNcsnY9m7KFs+m4k TwfcavY5oIIxVK9yMf6NGtv5S84yUBIR5D2Z/Eb4rM4t7D6j/eJA9o2Stu7p2ysa7ToCiv GpEth9UFeXvUTfiTTy4/jh9QEIH30X85OBIUew8AgRudwi3+87RnCXJObfoAYndkrY2KJf NwEiXgXAcx81tXk9zP5uhKuJfWX5DltasJNPgCH38bSAsmg+X8PGncJGn3RSkA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793570920; b=rwDZlqkO5tMnyVYiRs1RHnWuLT1bNdg8tikytsL75Ejlm+AG+1OtJiZoTVK+4gEJdRVtjD ZPHs8KYZKSDYPJg2bu8gTPCkYLS1nABOS4NM0FZOM8vhVnm2zEZb2Z+j5kRO9dyLp0EihU VqK8Rt6/oHze943BQ/CW6yYIQqiLtwEtE7rEUv223G6Q3j448p2uUHSty5uWIf5zMqbheo cHp4FoMIWvNqyxdMsghj8Tcmsouh7m4WDWZZaUt1sCsTv7AIQLU01alz7VB02FGoCSqH/m QB7sbKZaY7KmFYoXk2chJIxexhzxYXTEepiJ0MOVuALB4ZlIxaCZrXjxp5lrVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793570920; 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=tFOVBpo8yUN647okLBYY6UeFmCvieWL6KnA/3APbLCI=; b=ajTM8BRkvQncP+21o/0yPOrkeNgSDosOXYHJctN9ZKPZwMqkf7HNUUh5+XuHhuMBh6YS8l eJ38bm88fGqPyVy1dctzNWyFuiCTQH3cXmocqt/ADGCgqxNNjQ43gELDcqwK9x/i3jXHY2 PIDUStjBnC96eib6V5c7ZEZXaer1nVgG9OS8v9mfSHwhJCcnskqJEDwZ2xweEShIDIx8jp oYtz1sEgGI8z0HhIQ53zfzSQW+pRcwWtyiuhEq7y8brBRlaO7HpcBZCDPibWMQqzRVPK+p xe2XVxDpbN6r/MC81g/mN9thiweg7QaaRf3KxcfgkiFUi1VAqyj2kdRULP1Ffg== 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 4jHprS2f41zGtD for ; Sun, 01 Nov 2026 22:08:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 428f5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Nov 2026 22:08:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: ShengYi Hung Subject: git: b2e37d027f10 - stable/15 - libthr: Fix some bugs in trylock List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD src repository 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/stable/15 X-Git-Reftype: branch X-Git-Commit: b2e37d027f10910bb2e7577df906dadd66739153 Auto-Submitted: auto-generated Date: Sun, 01 Nov 2026 22:08:40 +0000 Message-Id: <6ae7b868.428f5.327552ca@gitrepo.freebsd.org> The branch stable/15 has been updated by aokblast: URL: https://cgit.FreeBSD.org/src/commit/?id=b2e37d027f10910bb2e7577df906dadd66739153 commit b2e37d027f10910bb2e7577df906dadd66739153 Author: ShengYi Hung AuthorDate: 2026-10-07 02:30:48 +0000 Commit: ShengYi Hung CommitDate: 2026-11-01 22:08:00 +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 (cherry picked from commit de2c0f157a9cce0b763da9ae97ada870fa4d1824) --- 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)); }