Skip to content

Commit

Permalink
FreeBSD: Use the new freeuio() helper to free dynamically allocated U…
Browse files Browse the repository at this point in the history
…IOs (openzfs#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]>
  • Loading branch information
markjdb authored Jul 11, 2024
1 parent 156a641 commit a10faf5
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion module/os/freebsd/spl/spl_uio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit a10faf5

Please sign in to comment.