Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 May 2026 22:19:35 +0000
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 13d3bd165e22 - main - subr_uio.c: Remove a KASSERT() for large NFS server I/O
Message-ID:  <6a064a77.422a5.5d3744f6@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=13d3bd165e225eec9af91b6e3361c2482931f95b

commit 13d3bd165e225eec9af91b6e3361c2482931f95b
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2026-05-14 22:17:55 +0000
Commit:     Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2026-05-14 22:17:55 +0000

    subr_uio.c: Remove a KASSERT() for large NFS server I/O
    
    When the NFS server is set to allow an I/O size greater
    than 1Mbyte (not allowed in FreeBSD's main yet), a
    KASSERT() in allocuio() can fail when:
    zfs_freebsd_write()->zfs_write()->zfs_uiocopy()
    ->cloneuio()->allocuio()
    is called for a large NFS server write.
    
    Since the userland API callers to allocuio() already
    check that the size does not exceed UIO_MAXIOV,
    there does not seem to be a need to a KASSERT()
    here.
    
    Removing the KASSERT() allows NFS server writes
    of greater than 1Mbyte to work, once the NFS code
    is patched to allow them.
    
    Reviewed by:    kib
    MFC after:      2 weeks
    Differential Revision:  https://reviews.freebsd.org/D57005
---
 sys/kern/subr_uio.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/sys/kern/subr_uio.c b/sys/kern/subr_uio.c
index 6ac932fb6690..fa5865fbe938 100644
--- a/sys/kern/subr_uio.c
+++ b/sys/kern/subr_uio.c
@@ -441,8 +441,6 @@ allocuio(u_int iovcnt)
 	struct uio *uio;
 	int iovlen;
 
-	KASSERT(iovcnt <= UIO_MAXIOV,
-	    ("Requested %u iovecs exceed UIO_MAXIOV", iovcnt));
 	iovlen = iovcnt * sizeof(struct iovec);
 	uio = malloc(iovlen + sizeof(*uio), M_IOV, M_WAITOK);
 	uio->uio_iov = (struct iovec *)(uio + 1);


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a064a77.422a5.5d3744f6>