From nobody Thu May 14 01:02:26 2026 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 4gGBrL2y34z6dLhL for ; Thu, 14 May 2026 01:02: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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gGBrL1dlRz4FWm for ; Thu, 14 May 2026 01:02:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1778720546; 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=OkYjtMteP+DPOZ5XGV1oDEjzaimgUAVH278biQXtyr4=; b=PDbvfWVpV0xEscQdhDI/vsmASPSK3Y/vBAXaVYdzPT1BWisXDPnAdhtHntzRAq2joohgTT xhTFtHIKmT0ztIzNR783tJkVyLX2dMykr3GdcGylsLitzP6zSiMJeP8mql8sKkcKl7MthM dz+xWPJPLpO9Q6zOgxFl8uUVsdBAcyOdFnAy8Cu9oLUpY3SYxr+erwVaOMmyPKogc+8X9X XdKbKVOa7Z0kOLuubtzdYAHS2vjIsmvH7cs+1OLjMo9wOg+sdsV2w8jbOquVpnoAD4ni2M 2H4fyLjeMa59gCMM8o1RyZFRH5z1aO4FMsaqpp8dYy/Si1a9A2Kkho/5Kub7zg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1778720546; a=rsa-sha256; cv=none; b=rtET8FTU/JGuHIPfQg1v9qt28e75Xd65xItju5AIl6kqH0zRuiu6CKiE+gE0f0UNg1LL+r h6cda2Wrlm/Sit7oraNGRTWvzXhvmOFrwclhZYjFM0p/6It/nvWw4VO9HVErDUmFQZxqpE PuUUyAinWfIc8sQj9PiPE/lewVT6g44TE8RqQeiY1ut/zRAKJnf63l4crfA/Woo7r0NoXa E9vh58bYzayIu7d9VLbKvWaBA/hMlzlg9RXaAce8rwei7R1RhNMGlx6mtW3XySm8z94/KS vtXEWOV0nYIvfyru+k74Lr40oBEpIotKDziIaX92sxIN6TgB47pmBcyD7lkxMw== 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=1778720546; 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=OkYjtMteP+DPOZ5XGV1oDEjzaimgUAVH278biQXtyr4=; b=raMQkN8MhYvKBQz1Wia1y6Zfi5iIdx1IcYehIjIANiBsZbn0V6aTGQUbBDSMl96A4jaKYU J2QxOGKApVj0cZxzLnMrG68TQ4YAbZXRrwdnN5Y3yVKuN+SC9PjOLPcNShdpR2/6N22UcT 4yA1ChEIVKPnRVZXaFE/7x1OEC4kWxUZc0RxKMjYSckZYS3dMiq6Fd/P/Np+C/x7SJ3QA7 7kUjFqnba0COereekqd1g7Yp3Iv3QbDF7qi9N0ktqq3kuniY3bPoWaMTiQ47pfCFh+nTqH 7kLk7S9e2/yvxK/TaiOfTfVLsN2ZLDktaeoheFPfTdpJ7anDsQx6gsZI3S1vmQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gGBrL1BfPzXv for ; Thu, 14 May 2026 01:02:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 242d2 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 14 May 2026 01:02:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Rick Macklem Subject: git: 49937a6face3 - stable/15 - nfscl: Disable use of callbacks for NFSv4.0 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 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/stable/15 X-Git-Reftype: branch X-Git-Commit: 49937a6face3cc78353adacac8f5040ac6abb324 Auto-Submitted: auto-generated Date: Thu, 14 May 2026 01:02:26 +0000 Message-Id: <6a051f22.242d2.222798ca@gitrepo.freebsd.org> The branch stable/15 has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=49937a6face3cc78353adacac8f5040ac6abb324 commit 49937a6face3cc78353adacac8f5040ac6abb324 Author: Rick Macklem AuthorDate: 2026-04-30 21:37:36 +0000 Commit: Rick Macklem CommitDate: 2026-05-14 01:00:52 +0000 nfscl: Disable use of callbacks for NFSv4.0 The only use for callbacks for NFSv4.0 is delegations and delegations rarely work well for NFSv4.0 anyhow. Therefore, this patch disables callbacks for the NFSv4.0 client. This is the same behavior as occurred when the nfscbd(8) daemon was not running. This change allowed a function called nfscl_getmyip() to be removed from the kernel, which is nice since maintaining this function was bothersome, due to its use of routing, etc. (cherry picked from commit 71ac1ec5c9d990e7881e75f04140eb0bfe473a21) --- sys/fs/nfs/nfs_commonport.c | 4 --- sys/fs/nfs/nfs_var.h | 1 - sys/fs/nfsclient/nfs_clport.c | 79 ----------------------------------------- sys/fs/nfsclient/nfs_clrpcops.c | 50 +++----------------------- 4 files changed, 5 insertions(+), 129 deletions(-) diff --git a/sys/fs/nfs/nfs_commonport.c b/sys/fs/nfs/nfs_commonport.c index dbc2b3b942e9..91d9188d30c5 100644 --- a/sys/fs/nfs/nfs_commonport.c +++ b/sys/fs/nfs/nfs_commonport.c @@ -62,7 +62,6 @@ int newnfs_numnfsd = 0; struct nfsstatsv1 nfsstatsv1; int nfs_numnfscbd = 0; int nfscl_debuglevel = 0; -char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; int nfsrv_lughashsize = 100; struct mtx nfsrv_dslock_mtx; struct nfsdevicehead nfsrv_devidhead; @@ -90,9 +89,6 @@ SYSCTL_INT(_vfs_nfs, OID_AUTO, realign_test, CTLFLAG_RW, &nfs_realign_test, 0, "Number of realign tests done"); SYSCTL_INT(_vfs_nfs, OID_AUTO, realign_count, CTLFLAG_RW, &nfs_realign_count, 0, "Number of mbuf realignments done"); -SYSCTL_STRING(_vfs_nfs, OID_AUTO, callback_addr, CTLFLAG_RW, - nfsv4_callbackaddr, sizeof(nfsv4_callbackaddr), - "NFSv4 callback addr for server to use"); SYSCTL_INT(_vfs_nfs, OID_AUTO, debuglevel, CTLFLAG_RW, &nfscl_debuglevel, 0, "Debug level for NFS client"); SYSCTL_INT(_vfs_nfs, OID_AUTO, userhashsize, CTLFLAG_RDTUN, &nfsrv_lughashsize, diff --git a/sys/fs/nfs/nfs_var.h b/sys/fs/nfs/nfs_var.h index 2f81905f6c36..8d8de381cbaf 100644 --- a/sys/fs/nfs/nfs_var.h +++ b/sys/fs/nfs/nfs_var.h @@ -373,7 +373,6 @@ int nfsrpc_destroysession(struct nfsmount *, struct nfsclsession *, /* nfs_clcomsubs.c */ int nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int); struct mbuf *nfsm_uiombuflist(struct uio *, int, u_int); -u_int8_t *nfscl_getmyip(struct nfsmount *, struct in6_addr *, int *); int nfsm_getfh(struct nfsrv_descript *, struct nfsfh **); int nfscl_mtofh(struct nfsrv_descript *, struct nfsfh **, struct nfsvattr *, int *); diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index d23051058ce4..bc5f74b79749 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -34,8 +34,6 @@ */ #include -#include "opt_inet.h" -#include "opt_inet6.h" #include @@ -47,11 +45,6 @@ #include #include #include -#include -#include -#include -#include -#include #include @@ -1046,78 +1039,6 @@ nfscl_loadfsinfo(struct nfsmount *nmp, struct nfsfsinfo *fsp, nmp->nm_state |= NFSSTA_GOTFSINFO; } -/* - * Lookups source address which should be used to communicate with - * @nmp and stores it inside @pdst. - * - * Returns 0 on success. - */ -u_int8_t * -nfscl_getmyip(struct nfsmount *nmp, struct in6_addr *paddr, int *isinet6p) -{ -#if defined(INET6) || defined(INET) - int fibnum; - - fibnum = curthread->td_proc->p_fibnum; -#endif -#ifdef INET - if (nmp->nm_nam->sa_family == AF_INET) { - struct epoch_tracker et; - struct nhop_object *nh; - struct sockaddr_in *sin; - struct in_addr addr = {}; - - sin = (struct sockaddr_in *)nmp->nm_nam; - NET_EPOCH_ENTER(et); - CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - nh = fib4_lookup(fibnum, sin->sin_addr, 0, NHR_NONE, 0); - if (nh != NULL) { - addr = IA_SIN(ifatoia(nh->nh_ifa))->sin_addr; - if (IN_LOOPBACK(ntohl(addr.s_addr))) { - /* Ignore loopback addresses */ - nh = NULL; - } - } - CURVNET_RESTORE(); - NET_EPOCH_EXIT(et); - - if (nh == NULL) - return (NULL); - *isinet6p = 0; - *((struct in_addr *)paddr) = addr; - - return (u_int8_t *)paddr; - } -#endif -#ifdef INET6 - if (nmp->nm_nam->sa_family == AF_INET6) { - struct epoch_tracker et; - struct sockaddr_in6 *sin6; - int error; - - sin6 = (struct sockaddr_in6 *)nmp->nm_nam; - - NET_EPOCH_ENTER(et); - CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - error = in6_selectsrc_addr(fibnum, &sin6->sin6_addr, - sin6->sin6_scope_id, NULL, paddr, NULL); - CURVNET_RESTORE(); - NET_EPOCH_EXIT(et); - if (error != 0) - return (NULL); - - if (IN6_IS_ADDR_LOOPBACK(paddr)) - return (NULL); - - /* Scope is embedded in */ - *isinet6p = 1; - - return (u_int8_t *)paddr; - } -#endif - return (NULL); -} - /* * Copy NFS uid, gids from the cred structure. */ diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 308c45462002..43fc0af299b1 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -74,7 +74,6 @@ extern struct timeval nfsboottime; extern u_int32_t newnfs_false, newnfs_true; extern nfstype nfsv34_type[9]; extern int nfsrv_useacl; -extern char nfsv4_callbackaddr[INET6_ADDRSTRLEN]; extern int nfscl_debuglevel; extern int nfs_pnfsiothreads; extern u_long sb_max_adj; @@ -1040,13 +1039,10 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, u_int32_t *tl; struct nfsrv_descript nfsd; struct nfsrv_descript *nd = &nfsd; - u_int8_t *cp = NULL, *cp2, addr[INET6_ADDRSTRLEN + 9]; - u_short port; - int error, isinet6 = 0, callblen; + int error; nfsquad_t confirm; static u_int32_t rev = 0; struct nfsclds *dsp, *odsp; - struct in6_addr a6; struct nfsclsession *tsep; struct rpc_reconupcall recon; struct nfscl_reconarg *rcp; @@ -1204,49 +1200,13 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, (void) nfsm_strtom(nd, clp->nfsc_id, clp->nfsc_idlen); /* - * set up the callback address + * Always set the callback address to 0.0.0.0.0.0 so NFSv4.0 + * callbacks are disabled. */ NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(NFS_CALLBCKPROG); - callblen = strlen(nfsv4_callbackaddr); - if (callblen == 0) - cp = nfscl_getmyip(nmp, &a6, &isinet6); - if (nfscl_enablecallb && nfs_numnfscbd > 0 && - (callblen > 0 || cp != NULL)) { - port = htons(nfsv4_cbport); - cp2 = (u_int8_t *)&port; -#ifdef INET6 - if ((callblen > 0 && - strchr(nfsv4_callbackaddr, ':')) || isinet6) { - char ip6buf[INET6_ADDRSTRLEN], *ip6add; - - (void) nfsm_strtom(nd, "tcp6", 4); - if (callblen == 0) { - ip6_sprintf(ip6buf, (struct in6_addr *)cp); - ip6add = ip6buf; - } else { - ip6add = nfsv4_callbackaddr; - } - snprintf(addr, INET6_ADDRSTRLEN + 9, "%s.%d.%d", - ip6add, cp2[0], cp2[1]); - } else -#endif - { - (void) nfsm_strtom(nd, "tcp", 3); - if (callblen == 0) - snprintf(addr, INET6_ADDRSTRLEN + 9, - "%d.%d.%d.%d.%d.%d", cp[0], cp[1], - cp[2], cp[3], cp2[0], cp2[1]); - else - snprintf(addr, INET6_ADDRSTRLEN + 9, - "%s.%d.%d", nfsv4_callbackaddr, - cp2[0], cp2[1]); - } - (void) nfsm_strtom(nd, addr, strlen(addr)); - } else { - (void) nfsm_strtom(nd, "tcp", 3); - (void) nfsm_strtom(nd, "0.0.0.0.0.0", 11); - } + (void)nfsm_strtom(nd, "tcp", 3); + (void)nfsm_strtom(nd, "0.0.0.0.0.0", 11); NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); *tl = txdr_unsigned(clp->nfsc_cbident); nd->nd_flag |= ND_USEGSSNAME;