FreeBSD: Use the new freeuio() helper to free dynamically allocated UIOs (#16300)

This freeuio() interface was introduced to FreeBSD recently.  For now
it simply calls free(), so this change has no effect.  However, this
may not always be true, and in CheriBSD this change is required.

Signed-off-by: Mark Johnston <[email protected]>
Reviewed-by: Alexander Motin <[email protected]>
Reviewed-by: Brooks Davis <[email protected]>
Reviewed-by: Tony Hutter <[email protected]>
This commit is contained in:
Mark Johnston authored and GitHub committed 2024-07-11 16:52:51 -07:00
1 parent 156a64161b
commit a10faf5ce6
1 file changed
+11 -1
+11 -1
View File
@@ -45,6 +45,16 @@
#include <sys/vnode.h>
#include <sys/zfs_znode.h>
static void
zfs_freeuio(struct uio *uio)
{
#if __FreeBSD_version > 1500013
freeuio(uio);
#else
free(uio, M_IOV);
#endif
}
int
zfs_uiomove(void *cp, size_t n, zfs_uio_rw_t dir, zfs_uio_t *uio)
{
@@ -77,7 +87,7 @@ zfs_uiocopy(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio, size_t *cbytes)
error = vn_io_fault_uiomove(p, n, uio_clone);
*cbytes = zfs_uio_resid(uio) - uio_clone->uio_resid;
if (uio_clone != &small_uio_clone)
free(uio_clone, M_IOV);
zfs_freeuio(uio_clone);
return (error);
}