From nobody Sun Apr 28 01:42:07 2024 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 4VRq2R4hldz5HKyV; Sun, 28 Apr 2024 01:42:07 +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 4VRq2R4Gftz4YL3; Sun, 28 Apr 2024 01:42:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714268527; 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=ROXVjeUn1TpZjVkDTlPRMhxSzo7V/C7KTUwCe0pLaOc=; b=UpmkppWfuuFxtT45N+JzdR8GnFForM+sIs12WB+v1OMPRnQH8Kqg8IwI3QTn2BUbC3dFIj TysQqFXnJ5hXpSMeEk0xcyHX9srRxajt8eR8Co6vmy0unxJM+9Z2/X44QECekR6CI2ywZx dWVbS77Mb8jEibZduLs448ff1K+Ln59dCIf/P8vFOIh5/NBh2vQY2FhCB77wRlKdO1IMAW h++Jqzen9P5L7moKAT9w7oAzuLHnfdvchbef0qzdF3MilIJUYFZT6eBbxkzvq4V3e+2wKw N7MmRPRZ2L94TubtMQd5noT9lEAj6tRKX5tARzExPwYP2pBpIIh0JcIRQZ6b8A== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714268527; a=rsa-sha256; cv=none; b=UDpBlQPtfLqjOUVheSfjsNl24yIBPLhGd4paGF54HDGdVbp4UXTwdoRL7wRyja9Fh+NuAP YASD2g5JAsgiNHCKkcr2QD9WEETvjkDXKQLAkbvGtpjkK887B1OtmcGC6gSo7wFKGP/eLh zN9Yx2sHcuqImHhRgYb3QQuWK9kg/o/3mXVipot0IvwXuwx6zWZ31zb53SQ1YwSD7cy6tv Es+DbqY+IUqRdSA97+977VYfV0VnSzez/mdxLFYm68MtVNmkNoign6p7JQe4D53tJLd1dx jRC4YMQWMnSZgGyQ2CbYx1YdiaCNtxcjLCVU0yiMmCM+6DveHzmnsQZs1a+zdg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714268527; 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=ROXVjeUn1TpZjVkDTlPRMhxSzo7V/C7KTUwCe0pLaOc=; b=ZOiMxN8giPZxcmM51w2IoF7Mvbs5i6ur98B4mr9gpiKWve2gUG6MCXkdXvqaupjgpl3p1J uEP2X9QsbrhC91jAqjzTnEyFov2aje7Mth+V2OpmBeTty4zdUTrd9SgFlFeeqFmzAXRrnC 3AG4pIlSuf1jX4JNqjjN/IZyrcd3xtescvvSFHSTv+04wsysaXX6qVSb5y7S4MCyo884xn lEt2XCo5o4OZcTCTf+DF8gccHSVg+TLibrtgIyS86sJ2+UVKNqmiTW6YAsx445/ZRlwHhJ n25/wrBIy47DBDBjFVMxILD2h1ZlSSBZBdV68/cr1FBqpZ9N3O66S/XCe2Ufew== 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 4VRq2R3tdJz15Hx; Sun, 28 Apr 2024 01:42:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 43S1g7Fl027107; Sun, 28 Apr 2024 01:42:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43S1g7Qx027104; Sun, 28 Apr 2024 01:42:07 GMT (envelope-from git) Date: Sun, 28 Apr 2024 01:42:07 GMT Message-Id: <202404280142.43S1g7Qx027104@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: fba90651e430 - stable/13 - Revert "nfsd: Fix NFSv4.1/4.2 Claim_Deleg_Cur_FH" 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: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fba90651e4308508465d7bb02b8d55759922a312 Auto-Submitted: auto-generated The branch stable/13 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=fba90651e4308508465d7bb02b8d55759922a312 commit fba90651e4308508465d7bb02b8d55759922a312 Author: Rick Macklem AuthorDate: 2024-04-25 16:41:23 +0000 Commit: Rick Macklem CommitDate: 2024-04-28 01:41:12 +0000 Revert "nfsd: Fix NFSv4.1/4.2 Claim_Deleg_Cur_FH" This reverts commit f300335d9aebf2e99862bf783978bd44ede23550. It turns out that the old code was correct and it was wireshark that was broken and indicated that the RPC's XDR was bogus. Found during IETF bakeathon testing this week. (cherry picked from commit 54c3aa02e926268ba5551cd7d28fddf38b3589a2) --- sys/fs/nfsserver/nfs_nfsdserv.c | 10 ++-------- sys/fs/nfsserver/nfs_nfsdstate.c | 16 ++++------------ 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index c1ba36347b4c..437f4b1c685d 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -3006,18 +3006,12 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, */ NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); claim = fxdr_unsigned(int, *tl); - if (claim == NFSV4OPEN_CLAIMDELEGATECUR) { + if (claim == NFSV4OPEN_CLAIMDELEGATECUR || claim == + NFSV4OPEN_CLAIMDELEGATECURFH) { NFSM_DISSECT(tl, u_int32_t *, NFSX_STATEID); stateid.seqid = fxdr_unsigned(u_int32_t, *tl++); NFSBCOPY((caddr_t)tl,(caddr_t)stateid.other,NFSX_STATEIDOTHER); stp->ls_flags |= NFSLCK_DELEGCUR; - } else if (claim == NFSV4OPEN_CLAIMDELEGATECURFH) { - /* Fill in most of the stateid from the clientid. */ - stateid.seqid = 0; - stateid.other[0] = clientid.lval[0]; - stateid.other[1] = clientid.lval[1]; - stateid.other[2] = 0; - stp->ls_flags |= NFSLCK_DELEGCUR; } else if (claim == NFSV4OPEN_CLAIMDELEGATEPREV || claim == NFSV4OPEN_CLAIMDELEGATEPREVFH) { stp->ls_flags |= NFSLCK_DELEGPREV; diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c index f54459947f44..06d0b79f10d5 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -2555,10 +2555,6 @@ tryagain: /* * For Delegate_Cur, search for the matching Delegation, * which indicates no conflict. - * For NFSv4.1/4.2 Claim_Deleg_Cur_FH only provides - * the clientid, which is the first two "other" elements - * for the stateid. This should be sufficient, since there - * is only one delegation per client and file. * An old delegation should have been recovered by the * client doing a Claim_DELEGATE_Prev, so I won't let * it match and return NFSERR_EXPIRED. Should I let it @@ -2569,8 +2565,8 @@ tryagain: (((nd->nd_flag & ND_NFSV41) != 0 && stateidp->seqid == 0) || stateidp->seqid == stp->ls_stateid.seqid) && - stateidp->other[0] == stp->ls_stateid.other[0] && - stateidp->other[1] == stp->ls_stateid.other[1]) + !NFSBCMP(stateidp->other, stp->ls_stateid.other, + NFSX_STATEIDOTHER)) break; } if (stp == LIST_END(&lfp->lf_deleg) || @@ -2821,10 +2817,6 @@ tryagain: /* * For Delegate_Cur, search for the matching Delegation, * which indicates no conflict. - * For NFSv4.1/4.2 Claim_Deleg_Cur_FH only provides - * the clientid, which is the first two "other" elements - * for the stateid. This should be sufficient, since there - * is only one delegation per client and file. * An old delegation should have been recovered by the * client doing a Claim_DELEGATE_Prev, so I won't let * it match and return NFSERR_EXPIRED. Should I let it @@ -2835,8 +2827,8 @@ tryagain: (((nd->nd_flag & ND_NFSV41) != 0 && stateidp->seqid == 0) || stateidp->seqid == stp->ls_stateid.seqid) && - stateidp->other[0] == stp->ls_stateid.other[0] && - stateidp->other[1] == stp->ls_stateid.other[1]) + !NFSBCMP(stateidp->other, stp->ls_stateid.other, + NFSX_STATEIDOTHER)) break; } if (stp == LIST_END(&lfp->lf_deleg) ||