From nobody Tue Aug 4 15:57:13 2026 X-Original-To: dev-commits-src-main@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 4hDypx3sRHz6myXQ for ; Tue, 04 Aug 2026 15:57:13 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hDypx333lz3hMH for ; Tue, 04 Aug 2026 15:57:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785859033; 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=sKKmei0ODBzSVASUj1WsulyEJy1QsT2btN9/RvL1fTs=; b=JGNIsLnU1mQrClc+D30aUIsq75HinalvrTpnpLg9q3i5fKWI1G17KJvkzzHURPJCNB7eb2 vM/Eh3ixNilHGZhv7A/SATm6XtPSkG+L61phQlYBOLkDTsYlopre5rQe1vJNwZ2RHNlp20 MKAqG0ngP3hWOGCX/cj/szDObrnkyQzoC6VjjUzJUsXztbQJL9lrMAh3MytxMOn0O0TUO+ X5X1nyiy4OjRvKN4SjUn5hVckJ2mpf2qCN/us4c+rU4NWphIx1t/K0s4JxDQCrEfnTC3uE CUt1hViwBKMaY3VS/lzVLOGBEFkO1+7FVokD00plq7q7shYACFZRRoUWyGU30Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785859033; a=rsa-sha256; cv=none; b=W4IPQMFC5wgnXtV8AvT70Y5JqUcRz5vFUSS6KH1GKs05lVXyZxfx/kwFTGnBN3J/BN9XQE MwwsMl9zF8a+rWG5KFApg7QjUVRpSiJbJSWY4x+iHuNTfW+mstLEW4HXFfhD7OPtr+H+WD egz9sxDygTXzHl5ZSFXPWPbNfZ9CZvo7wzKXN1mxnBPl+tHTIEbsWQxR4eUMoIT6urQ9Ao Z9GmaWwQYUfZoxotO19/Hpzw2Ak+VClYAg711w1U6LESC91ebW7k/I7O80x9miiDttYi/k 7DavTha2dFDgdeelu6jv9yt5rojNaWek4TznOiN8ddtCjtShWLv4pfyT+j+NYQ== 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=1785859033; 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=sKKmei0ODBzSVASUj1WsulyEJy1QsT2btN9/RvL1fTs=; b=KBdjyS5vQclVBJlPlJqVvyUfo+griH5haKExnOQ4OqxJBIh2DPEfZFBHHgbFV+Zpy2H7ID UayADzVjHhqNntCOZfOFPdsK8U33A1Dw9SCBOft7m2Z4WzoX2Wk2bP0X4xy07IwtLT3pPB cTUb/6K6ow4iGQNgKoqsdsr8c4E62zvC/rY3exKA0W3KnZz2QMrO4eQOuZ/tWZsyCr5+7T c1oUJeGDQOnlgS0uyMvUVMztpJ20k3jDoAwIfzREw6fRuT7AVlRpKmhqmdjumnNDTCaN3n VKOxCoDknnQ62ZoWQgIN0EJEbunrRSe8Y+B8A4ECHxdX/OWY9QvXS9EfPINutg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hDypx1bRGztst for ; Tue, 04 Aug 2026 15:57:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 18625 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 04 Aug 2026 15:57:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 8f20299b473a - main - nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: 8f20299b473af6132e0f146d7f634640993aeb81 Auto-Submitted: auto-generated Date: Tue, 04 Aug 2026 15:57:13 +0000 Message-Id: <6a720bd9.18625.1e4a27ab@gitrepo.freebsd.org> The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=8f20299b473af6132e0f146d7f634640993aeb81 commit 8f20299b473af6132e0f146d7f634640993aeb81 Author: Rick Macklem AuthorDate: 2026-08-04 15:55:24 +0000 Commit: Rick Macklem CommitDate: 2026-08-04 15:55:24 +0000 nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft Delegations in NFSv4.0 never worked well and, since the NFSv4.0 protocol is now deprecated, use of delegations for NFSv4.0 is disabled as far as the client can do so. It turns out that some Illumos NFSv4.0 server issues delegations anyhow (even when the callback path is specified as 0.0.0.0) and this can cause use after free problems. This patch deleted some cruft that did an nfsrpc_openrpc() call recursively when an NFSv4.0 server failed to issue a delegation when it had previously done so. This code was only meant to be an optimization and would have been rarely exercised. Since this recursive call of nfsrpc_openrpc() is in some of the backtraces in the bugzilla PR, getting rid of the cruft makes sense. It is not known if this helps w.r.t. the use after free problems at this time. PR: 297233 MFC after: 3 days --- sys/fs/nfsclient/nfs_clrpcops.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index fedfc7259197..7984737a2f65 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -735,33 +735,6 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, int fhlen, else op->nfso_posixlock = 0; - /* - * If the server is handing out delegations, but we didn't - * get one because an OpenConfirm was required, try the - * Open again, to get a delegation. This is a harmless no-op, - * from a server's point of view. - */ - if (!reclaim && (rflags & NFSV4OPEN_RESULTCONFIRM) && - (op->nfso_own->nfsow_clp->nfsc_flags & NFSCLFLAGS_GOTDELEG) - && !error && dp == NULL && ndp == NULL && !recursed) { - do { - ret = nfsrpc_openrpc(nmp, vp, nfhp, fhlen, newfhp, - newfhlen, mode, op, name, namelen, &ndp, 0, 0x0, - cred, p, syscred, 1); - if (ret == NFSERR_DELAY) - (void) nfs_catnap(PZERO, ret, "nfs_open2"); - } while (ret == NFSERR_DELAY); - if (ret) { - if (ndp != NULL) { - free(ndp, M_NFSCLDELEG); - ndp = NULL; - } - if (ret == NFSERR_STALECLIENTID || - ret == NFSERR_STALEDONTRECOVER || - ret == NFSERR_BADSESSION) - error = ret; - } - } } if (nd->nd_repstat != 0 && error == 0) error = nd->nd_repstat;