From nobody Fri Jun 17 19:37:34 2022 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 8A81685A9C0; Fri, 17 Jun 2022 19:37:35 +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 4LPq7g0kKlz3Plp; Fri, 17 Jun 2022 19:37:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494655; 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=clwakkIqEVZUSmxuwViYNhtwFKpdy5cZwL10IieCK9c=; b=f0nK8ss71h1HjYEpR6WLQQQjF29C/RigGRD1/1Vsw7wGlkhVq5lNy5yMx39ZhZdhTD5UY7 iUBsgPiY3o4107wdeKiNFnPhdT67m4WdwEPqBTWHkzVdOqHtilScuXUMy+yDDO3BQUXmvQ JBXEqUXpXy+vLvEvx5SZEdIZ87qqqEhyqKbZeLPF4sN2jPrmWf2MkKU+jSL+uRmRtAhCg6 Qk8Zrt4pen8cBPMmG6FWKd3yK0PpGQxWGMlK9BI73RFWe3avAfQ7n4GxWpcdXFX2Qp0Em8 xyQxgXN91NdtTL/VSR95z8iIxH/XVGBM7DR2gHYirWUBAH4gVlr/qaZjsw966w== 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 BE14125ABA; Fri, 17 Jun 2022 19:37:34 +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 25HJbYo0013539; Fri, 17 Jun 2022 19:37:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25HJbYHd013538; Fri, 17 Jun 2022 19:37:34 GMT (envelope-from git) Date: Fri, 17 Jun 2022 19:37:34 GMT Message-Id: <202206171937.25HJbYHd013538@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Chagin Subject: git: 696c311172a5 - stable/13 - linux(4): Replace casuword32 by casueword32. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dchagin X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 696c311172a5d7ff1da901f769f3b01195c2f6d5 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494655; 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=clwakkIqEVZUSmxuwViYNhtwFKpdy5cZwL10IieCK9c=; b=oh9N6xcKkzUiMwLtUIK2z8NsEYh6VJlTi1diBPLibRYJz0BlBO+UP641Br3SqgmaIKxGIZ R4RcKetPrpXZa/FB9FonMw+bwq1UAPWsqvOUnZ2mAZobUcD/tpysR1ZYXF0BNTWHK2XcbN GxfNCiQYrpqgsOygK6HtlrWQf0wS05foUCS++FgXOQCNibh7Dl/dFzRFX6lKDdfpijAhET r2Gq7pl4+tbkKUeC6EomFZ6AuqAi1oMETsjugh3WB/f42UNNCK3iP7KrdWv+C9h34LryvS 6M03/fiHakXXNuc0Z5H/MtL1B+8aQQDnY8HFPSbrfi3FC2CH9Gfc00BB/OMktQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655494655; a=rsa-sha256; cv=none; b=c+VGavu38Dfdqed7dF+UieKXkWeIUxdVgLxwYrqFZdd3M78vYnzcqD/6PFQ1vDEOg2B/S/ 5Bxngjn3Ghyi6I30rksJsEyQ/DCUmcKiuM26/dZt9OGZWv878phHiQyJAGsmJy0WgheELc zY7DtLXU6z/FefMoNIu9fhdpvOQEy/KN58EKI1hrXxGpDxHtRuBmu7IVJFS/0TGbqktAR5 J5cqE9BFioL2WVxfqhuZ9hLs+8IKlgXPit0xXq5K+6+y9al80Aluk6O+6OOmrLiq0ZXhl8 d7vD7zUL+yDK08kyMLr7im5QCsbS9KSHyyXHOjjp53hSm0pafEmRuVNTbVwx/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=696c311172a5d7ff1da901f769f3b01195c2f6d5 commit 696c311172a5d7ff1da901f769f3b01195c2f6d5 Author: Dmitry Chagin AuthorDate: 2021-07-29 09:50:11 +0000 Commit: Dmitry Chagin CommitDate: 2022-06-17 19:33:20 +0000 linux(4): Replace casuword32 by casueword32. Follow the r349951 (30b3018d), add check to react to stops and requests to terminate between retries. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D31254 MFC after: 2 weeks (cherry picked from commit 4f34dc64536f7de8324ca1a494aee88e64c7de70) --- sys/compat/linux/linux_futex.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/sys/compat/linux/linux_futex.c b/sys/compat/linux/linux_futex.c index 441a26d4d317..82a1eb55d618 100644 --- a/sys/compat/linux/linux_futex.c +++ b/sys/compat/linux/linux_futex.c @@ -107,8 +107,8 @@ LIN_SDT_PROBE_DEFINE1(futex, release_futexes, copyin_error, "int"); #define GET_SHARED(a) (a->flags & FUTEX_SHARED) ? AUTO_SHARE : THREAD_SHARE static int futex_atomic_op(struct thread *, int, uint32_t *); -static int handle_futex_death(struct linux_emuldata *, uint32_t *, - unsigned int); +static int handle_futex_death(struct thread *td, struct linux_emuldata *, + uint32_t *, unsigned int); static int fetch_robust_entry(struct linux_robust_list **, struct linux_robust_list **, unsigned int *); @@ -982,7 +982,7 @@ linux_get_robust_list(struct thread *td, struct linux_get_robust_list_args *args } static int -handle_futex_death(struct linux_emuldata *em, uint32_t *uaddr, +handle_futex_death(struct thread *td, struct linux_emuldata *em, uint32_t *uaddr, unsigned int pi) { uint32_t uval, nval, mval; @@ -994,20 +994,22 @@ retry: return (EFAULT); if ((uval & FUTEX_TID_MASK) == em->em_tid) { mval = (uval & FUTEX_WAITERS) | FUTEX_OWNER_DIED; - nval = casuword32(uaddr, uval, mval); - - if (nval == -1) + error = casueword32(uaddr, uval, &nval, mval); + if (error == -1) return (EFAULT); - - if (nval != uval) + if (error == 1) { + error = thread_check_susp(td, false); + if (error != 0) + return (error); goto retry; + } if (!pi && (uval & FUTEX_WAITERS)) { - error = futex_wake(curthread, uaddr, 1, true); + error = futex_wake(td, uaddr, 1, true); if (error != 0) return (error); } else if (pi && (uval & FUTEX_WAITERS)) { - error = futex_wake_pi(curthread, uaddr, true); + error = futex_wake_pi(td, uaddr, true); if (error != 0) return (error); } @@ -1067,7 +1069,7 @@ release_futexes(struct thread *td, struct linux_emuldata *em) rc = fetch_robust_entry(&next_entry, PTRIN(&entry->next), &next_pi); if (entry != pending) - if (handle_futex_death(em, + if (handle_futex_death(td, em, (uint32_t *)((caddr_t)entry + futex_offset), pi)) { return; } @@ -1084,5 +1086,6 @@ release_futexes(struct thread *td, struct linux_emuldata *em) } if (pending) - handle_futex_death(em, (uint32_t *)((caddr_t)pending + futex_offset), pip); + handle_futex_death(td, em, + (uint32_t *)((caddr_t)pending + futex_offset), pip); }