From nobody Thu Apr 25 16:45:26 2024 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 4VQMD66Zd9z5J5qD; Thu, 25 Apr 2024 16:45:26 +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 4VQMD65xtsz4LKs; Thu, 25 Apr 2024 16:45:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714063526; 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=aKGvvA/ZyV9A7wgRHVE7lNYQtE9dqKBfsZvKGpehPMo=; b=UI8nyRNPQ3pe9RagCB5ZrbwEY/JRF7j58Lm242z3aL2v0QCI/3qWJG7p/23boEjrKAQmD9 2xH3pk5JxCOgQfClR3CDmOpqsriMV9UimmceQbhMvsP6KUtky9mJDGwLPR0mfpOQnor3BW cNAi00ZgFV3qmXPu0hRs58duCBZihryjhExIbGzNQiVLl70RhR9j+LYwwen2hrK8LFLNUt GjCNjRTeewOansavH2d0ineBUy2v1WK/9HjpT3FUR0WUyMDASsKmZeHEoMSq0Pyy3jh/5t PQWbfFP1QicHvsi7STCV7QSeKeOH/aakDK4irrExKTV3UvX244DNXQgd/FpGhw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714063526; a=rsa-sha256; cv=none; b=LSFcW5z14Hr5htTSIOMrxwEtWTN/HpJT1d/C4r2maRuf7sIH+PijkHK4MIlaN3DIxxbk8M uw6t1hQR7SAgH8wMrp3m2i3lB4ozcX7NPgue5rLY3/4yGDCX2qp+ZZB//adVjKMjVE1kva iYs00CxKqwiaa49vFZBAeThahjK4S400Bw9wG3s5ZgO+Yxayz3LEKlk0Gel8R3nIevvNO+ bJ28cgM9KD/nZTv6lLF8VGd5gFTxdO52eY4zyyKOgg+jNjG+OLg7ZrHow6nB+A0apXaInj fv+cuLQlDAJax/27F4w7KjYRpNVvxtnGzy4LgctpDNwHIolE6apTFohuFgh0fg== 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=1714063526; 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=aKGvvA/ZyV9A7wgRHVE7lNYQtE9dqKBfsZvKGpehPMo=; b=E108arSe2GvIQQBL4eKBBGclTJQRDkL4d9Lh7UaFnsx9SGpo1ZzyHZvFcUPm42LwHjOjbp 8/jprpNZrTq9NlGdxt6oSb6xJpnvH/QOXlB219aJOnDA+zusoyzZneYiA978PcMbLMJI/g xVtlm85ula0PDgZB9hpZVK2RGjrxx1EtXmGZyR88G1NmJ8OLjCbSIsOvvtLceBVQrj9Jro IkpmHllmpeoOdpklGyLWtmwfzl/0QO9bleU+UmMyT1Su9HbXTk24J59XPOZ+79aPnTX/fS eWqwwbmAl6IdLXnaMvU1xm2PwJaWJnHcbjOgDPc3T6Oer9l2eLm/DFXkWThBRw== 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 4VQMD65Xtgz161b; Thu, 25 Apr 2024 16:45:26 +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 43PGjQ22046715; Thu, 25 Apr 2024 16:45:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43PGjQjF046713; Thu, 25 Apr 2024 16:45:26 GMT (envelope-from git) Date: Thu, 25 Apr 2024 16:45:26 GMT Message-Id: <202404251645.43PGjQjF046713@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 54c3aa02e926 - main - Revert "nfsd: Fix NFSv4.1/4.2 Claim_Deleg_Cur_FH" 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: 54c3aa02e926268ba5551cd7d28fddf38b3589a2 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=54c3aa02e926268ba5551cd7d28fddf38b3589a2 commit 54c3aa02e926268ba5551cd7d28fddf38b3589a2 Author: Rick Macklem AuthorDate: 2024-04-25 16:41:23 +0000 Commit: Rick Macklem CommitDate: 2024-04-25 16:41:23 +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. --- 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 899e88508b60..8141ee6cbdb6 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -3003,18 +3003,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 da57ebde7a52..c73840277022 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -2568,10 +2568,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 @@ -2582,8 +2578,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) || @@ -2834,10 +2830,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 @@ -2848,8 +2840,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) ||