From nobody Mon Mar 21 23:56:24 2022 X-Original-To: dev-commits-src-all@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 018501A3BA45; Mon, 21 Mar 2022 23:56:25 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KMs2w6ZhPz3r92; Mon, 21 Mar 2022 23:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647906984; 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=wY2SjTuDkIPHf0BdnTURKNHrGwI2+ByLgJ3Tz8L3qc4=; b=U55sypL9WtjKwjUuCeSrbKLjWp3WhYlMQ17QuZMmHWsM+l1OdcNiuwDcjAqJz6GIx9oJgo Mz+iHiSevphk2kHViy07vzta7Aal1MALmH7g2RlvAJqarkK2RJ0yctj9MEuHXVNyikcSWa UTjlHVAEFuK2GVP1NknvRWCgbT30HT0DJlfbkvsLYZ1fvFb50vPODuCcob3lyr7Wr+jOKm u/ZC5KMXpvO4hCdh+qdqpZnYFQ22JZE9/q2xTs0Tj8tMBFsL2pa9xkhmFsX3SGtAmnI+UQ Jcqdh1++A3TNN+l5Nh56SyAx21WymbLjublhxPT2AunyNlserT3s2Y3E+2VW5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C268124A3F; Mon, 21 Mar 2022 23:56:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 22LNuO3A064821; Mon, 21 Mar 2022 23:56:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22LNuOms064820; Mon, 21 Mar 2022 23:56:24 GMT (envelope-from git) Date: Mon, 21 Mar 2022 23:56:24 GMT Message-Id: <202203212356.22LNuOms064820@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: fd6ca665d206 - main - Fix umtxq_sleep() regression caused by 56070dd2e4d. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fd6ca665d206b74970e7c01d06ae06fed71500fc Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647906984; 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=wY2SjTuDkIPHf0BdnTURKNHrGwI2+ByLgJ3Tz8L3qc4=; b=MUaO4EM3sYgjoz8+tjg9iKAd1DnhkZ5TskLAj9CeICkDfNvPRFVRpvn7N6zii+OP2qqOoB Jcm6UCv2A3Ko5hQnYkfHnljPfUj7rNhLMRWmnKJTEpav/T0dUideUHRvoDYbiGnUmUnUOy ShRK642jhsMzpE0u7n6D/shsMsnmWPPWNpkFT0NND2bEp6EA/vjYU8af3jazVbvR715Giq MsE/DfcaleavcDr6qZ3PtaCQfU9alzMU0GJ2vivFfPAHbi5vQdo7dcs1L2pJc73Iyer0Uh pQFffnKun7ueDAmtpKnaET0iPhEdOTKofTnK/ZSF+yi4aKApMaxlFvuaVLzRWg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647906984; a=rsa-sha256; cv=none; b=WWDLZwwHhTOtBUa6O0YF0ufHg4Ovl7G23/nxUoOArbHaaktaDKhgDzUzwFr3FLzsh33jQ5 pYO+O72HusO+JxhxKHYhz8TE9jxhOBdaexdM22a0PSyTytE2oeZJQOC49JfJw+9tA33A3c psdvGxJ7m0DzLI3AzUoAtmdOroi4b/KvGLd/XhT0e8Cb7vb+r48ranfW3jAVXjqOTqKvnc CK50OgWmHd34Eg37/06DKbwtEnYc5MPsIYn47aEyzgABYMd+ikzmOD5ZF7MeZqtr4F/61h XGHvOv90wVRgXY7LukHBXwe5An0ly0Oz20ZgqXUpMLs921LBazfayeQBIkfj4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=fd6ca665d206b74970e7c01d06ae06fed71500fc commit fd6ca665d206b74970e7c01d06ae06fed71500fc Author: Alexander Motin AuthorDate: 2022-03-21 23:43:39 +0000 Commit: Alexander Motin CommitDate: 2022-03-21 23:55:55 +0000 Fix umtxq_sleep() regression caused by 56070dd2e4d. umtxq_requeue() moves the queue to a different hash chain and different lock, so we can't rely on msleep_sbt() reacquiring the same old lock. We have to use PDROP and update the queue chain and so lock pointer. PR: 262587 MFC after: 2 weeks --- sys/kern/kern_umtx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c index b864e6fe9e49..7f74ba68b59c 100644 --- a/sys/kern/kern_umtx.c +++ b/sys/kern/kern_umtx.c @@ -808,8 +808,10 @@ umtxq_sleep(struct umtx_q *uq, const char *wmesg, if (error != 0) break; } - error = msleep_sbt(uq, &uc->uc_lock, PCATCH, wmesg, + error = msleep_sbt(uq, &uc->uc_lock, PCATCH | PDROP, wmesg, sbt, 0, flags); + uc = umtxq_getchain(&uq->uq_key); + mtx_lock(&uc->uc_lock); if (error == EINTR || error == ERESTART) break; if (error == EWOULDBLOCK && (flags & C_ABSOLUTE) != 0) {