From nobody Wed Feb 16 01:03:26 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 3601919BEFBB; Wed, 16 Feb 2022 01:03:27 +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 4Jz07z117Pz4ZPr; Wed, 16 Feb 2022 01:03:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644973407; 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=OxhSutxPdFYoN2j9yH4TJ6hc3+aPemzQu36MmGnUgrA=; b=PUDvofMlcaK77/7WcQ+cb+YsBHSukn5Wahi4gK6QlJxpewqA1HTc50sdn9+jm6T6d1b/V7 FNVP65IX3yuPmSuEJesb0KU0JVSRrhIr/VvAuKLYNKLBJYYcXDWK1jmVisdeJ5xsJN6GT6 fDkSZwrFwq1zIz1nTVgZkGYa11R/xp3Zc+MOFVHW40JzUgO8YrnwbwOTXhaco/4h3eiVwv 0373Qf/fGFdU/U3yptgRWORQ7PdPyZQ4IulNAd8vPr6+rBDz+/v3bOgsGjjSPsrpCxNkd/ umhSAGG4UWVKc0XKVYMZN3giCxx2a6uSkDowVpfnW3Cn0rxaRQ1ic+v92bWRsA== 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 048644CAD; Wed, 16 Feb 2022 01:03:27 +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 21G13Q23097927; Wed, 16 Feb 2022 01:03:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21G13Qox097926; Wed, 16 Feb 2022 01:03:26 GMT (envelope-from git) Date: Wed, 16 Feb 2022 01:03:26 GMT Message-Id: <202202160103.21G13Qox097926@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: 7deb47265d12 - stable/13 - nfsd: Reply NFSERR_SEQMISORDERED for bogus seqid argument 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: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7deb47265d12caf83fb3d0ed047fc291da187937 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644973407; 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=OxhSutxPdFYoN2j9yH4TJ6hc3+aPemzQu36MmGnUgrA=; b=Okzv3Bph1G3IF8R3k0MOBft1IENlmtV3c2gbcnlz5ZVULPsXcXqeDp+RQL9ccqOUtyMf3+ kCMsP2r7gVZ5lMIm7fymz4dSA88KKOK/w9lc7WzO7aLX/iSqU6Vub+9itWlkFnFrTJwmA1 Nyx4xuROkUbsaSbLLZzJdEBIz0BMmoUfT9lF5fUC5zWLW+XejN9YJfBsqTs2EUCJIMu7J8 +2jo6j3ij/vF9IGxwUQdAdBjnvN/qlu8SQwgIoVwYfxln8CA1llx8n1zN32bkm85nWN657 P3TJvgd/L32SMZr3fl0iO+cCZeHptdNoWe7bTb1MmngvyWibE1pXL8zeAheV3Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1644973407; a=rsa-sha256; cv=none; b=H6iba6amnMv+unnmul8FXdWaBV9+txiK9bfvlV3CmPGiSSYAY64D1aHvifJQv4B7JtslJC GgQbtJjznxRCXLQUUTnGxn+VxBiXHjV+s1INlCOxQevMrN3nmmlBjINA575WfPoAJSb2TI 6gWLfCTjvDYG/lycqSBHxWM9RwesaeMRFK15Is4NiS5NpB4/lsrwT/cGOZsLT4bUdp/JeR +3hx9yANiHUTrUO2bkhTHUpDxoiKHqPZJhdo4V+k/Wn4kWaU7Osw6FwX/QxteNQd3LFf8K cBfwmEWzTukRxx9BTOWaPpzAXvcXT5o8ucMpBDvtBe7Q1Ie0lAYL3Bn0cDiPCA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=7deb47265d12caf83fb3d0ed047fc291da187937 commit 7deb47265d12caf83fb3d0ed047fc291da187937 Author: Rick Macklem AuthorDate: 2022-02-09 23:17:50 +0000 Commit: Rick Macklem CommitDate: 2022-02-16 01:02:28 +0000 nfsd: Reply NFSERR_SEQMISORDERED for bogus seqid argument The ESXi NFSv4.1 client bogusly sends the wrong value for the csa_sequence argument for a Create_session operation. RFC8881 requires this value to be the same as the sequence reply from the ExchangeID operation most recently done for the client ID. Without this patch, the server replies NFSERR_STALECLIENTID, which is the correct response for an NFSv4.0 SetClientIDConfirm but is not the correct error for NFSv4.1/4.2, which is specified as NFSERR_SEQMISORDERED in RFC8881. This patch fixes this. This change does not fix the issue reported in the PR, where the ESXi client loops, attempting ExchangeID/Create_session repeatedly. PR: 261291 (cherry picked from commit 17a56f3fabdfacb62f6d8858643cdb1861c8c1b5) --- sys/fs/nfsserver/nfs_nfsdstate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c index 1d0884683904..2abb99a5079e 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -676,10 +676,11 @@ nfsrv_getclient(nfsquad_t clientid, int opflags, struct nfsclient **clpp, * Perform any operations specified by the opflags. */ if (opflags & CLOPS_CONFIRM) { - if (((nd->nd_flag & ND_NFSV41) != 0 && - clp->lc_confirm.lval[0] != confirm.lval[0]) || - ((nd->nd_flag & ND_NFSV41) == 0 && - clp->lc_confirm.qval != confirm.qval)) + if ((nd->nd_flag & ND_NFSV41) != 0 && + clp->lc_confirm.lval[0] != confirm.lval[0]) + error = NFSERR_SEQMISORDERED; + else if ((nd->nd_flag & ND_NFSV41) == 0 && + clp->lc_confirm.qval != confirm.qval) error = NFSERR_STALECLIENTID; else if (nfsrv_notsamecredname(nd, clp)) error = NFSERR_CLIDINUSE;