From nobody Sun Nov 01 23:30:09 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 4jHrfZ5QNgz6y9Jv for ; Sun, 01 Nov 2026 23:30:14 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jHrfZ3xDhz3CWQ for ; Sun, 01 Nov 2026 23:30:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793575814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oHrBmvKDAPMC+L72oPYTmMZDLOK0uugzqQe/PPkF57U=; b=X5E4+PVk9XlKPTH5Nytfsu07VALAx/EiNzG76KDynZ7ayNsYOLyv2Sthf0ZxyLkXGzVp2+ DxLArWUEW5aIE9HnT2yzjBo7CV40ZbA4AnUL7LapfswdM2+ccI65q6ZlrrbMUXOu3QKo5A sH6AXkyPTJ1QxxZnml4T25Kx30BKaeKzlFFi7J1LT1HMfkYMG6kqzbevQTCqy3egSlFcB2 IiN99KOpeY+WxgiU4tpQR410E1sYb3FkvpNLzdkCKhg5HSa9JAeLX5mCAT0XrJ57qyH1Jh V4YcOr52phWnNKLZFS4CTr6YMpt35t1QpJj5uzfOpg2QLiW0lxcLqT7st1QVhA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793575814; b=hSM6Mz4cUQeWFqim9nxrmjZhq7y+PvwEUKsAxu8ztdzUikAz8QipC++jdLBg7I2nOmPNh9 k6bFuk6g0i5bQcA5XpWE5UK4nH6/t6q1qIK6PGTB+4YC8Umr0ik9NEkFJRO4FUZFTJlRCU +IxM9FB9ox6EGOju8OUPNLkOGhyMaFLDVAth0Ak5ve8ZxLm5tdH2Jt2NstppccVw8Aha3F wPACWEnCwkuBjS0a38ZDB+n47r9CtbaYvm9cZIFtXer1KcD+r0LXSqmA0DtrC2FIrh1pQh +UVtrUKD5udU80nqNkUJeHyB1TIgkLqZa7o6sl4427j59mUmFMzR0Fr2eWtQSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793575814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oHrBmvKDAPMC+L72oPYTmMZDLOK0uugzqQe/PPkF57U=; b=FjltBagOtFD08wAoLgoNAaGF6705vIzd/1zURFuW3ZsjC+3JpxTErVzAj68d8is+64Ilvb UmDkw6vLUfYRxF8asjppjLNfWWKKW3k4lc4VKf2op9hIdoFpJDe0A7SYg4giXtupXhhfK9 7422FezFS0PEMDedZrb1PQ/y2zKlL+pe3/LJr7WpFrs1rvpCIE7n+bBXLwcuPVIG8IFfRi TjWXsBkPVVjR9tH+cWCD6ncBVvpmM+HUpdgVuGcAom7qAOcdrU3/ov0TfXn6ciD2TQ44Gx 1zRAOuPLzUx6pdCMja/lynAsZ9b04Z9YGTi6WcIPvPtPHQVLovUNr6cTE23wzg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jHrfZ3FdGzKMn for ; Sun, 01 Nov 2026 23:30:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19e2d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Nov 2026 23:30:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Acts1631 From: Rick Macklem Subject: git: 64857418bb23 - main - nfsd: Fix handling of RPC messages too large to cache List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository 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: 64857418bb2379a7d89b6af04cddf92fa48dd28c Auto-Submitted: auto-generated Date: Sun, 01 Nov 2026 23:30:09 +0000 Message-Id: <6ae7cb81.19e2d.6305d6af@gitrepo.freebsd.org> The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=64857418bb2379a7d89b6af04cddf92fa48dd28c commit 64857418bb2379a7d89b6af04cddf92fa48dd28c Author: Acts1631 AuthorDate: 2026-11-01 23:27:55 +0000 Commit: Rick Macklem CommitDate: 2026-11-01 23:27:55 +0000 nfsd: Fix handling of RPC messages too large to cache The NFSv4.1/4.2 session negotiates a limit to the size of an RPC reply message that can be cached for the session slot. This patch fixes the code so that it checks that limit and does not cache replies larger than the limit, even if the client requested that it be cached. This patch is slightly different than what the author submitted, but retains the check for reply cache size limit. Reviewed by: rmacklem MFC after: 1 month --- sys/fs/nfsserver/nfs_nfsdserv.c | 6 ++++++ sys/fs/nfsserver/nfs_nfsdstate.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index 516ac6ab9706..0e0d791ef0e3 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -4835,7 +4835,13 @@ nfsrvd_createsession(struct nfsrv_descript *nd, __unused int isdgram, printf("Consider increasing kern.ipc.maxsockbuf\n"); do_printf = false; } + if (sep->sess_maxresp <= NFS_MAXXDR) { + nd->nd_repstat = NFSERR_TOOSMALL; + goto nfsmout; + } sep->sess_maxrespcached = fxdr_unsigned(uint32_t, *tl++); + if (sep->sess_maxrespcached > sep->sess_maxresp) + sep->sess_maxrespcached = sep->sess_maxresp; sep->sess_maxops = fxdr_unsigned(uint32_t, *tl++); sep->sess_maxslots = fxdr_unsigned(uint32_t, *tl++); if (sep->sess_maxslots > NFSV4_SLOTS) diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c index 2fdce567c1ce..de0c729acfa6 100644 --- a/sys/fs/nfsserver/nfs_nfsdstate.c +++ b/sys/fs/nfsserver/nfs_nfsdstate.c @@ -6222,6 +6222,10 @@ nfsrv_cache_session(struct nfsrv_descript *nd, struct mbuf **m) m_freem(*m); return; } + if (*m != NULL && m_length(*m, NULL) > sep->sess_maxrespcached) { + m_freem(*m); + *m = NULL; + } nfsv4_seqsess_cacherep(nd->nd_slotid, sep->sess_slots, nd->nd_repstat, m); NFSUNLOCKSESSION(shp);