From b364720524965f5b7ea74ce8e662be6238f3f9df Mon Sep 17 00:00:00 2001 From: Brooks Davis Date: Thu, 29 Jan 2026 02:41:33 +0000 Subject: [PATCH] nvpair: chase FreeBSD xdrproc_t definition As of FreeBSD 16, xdrproc_t will take exactly two arguments in both kernel and userspace in line with the Linux kernel. Reviewed-by: Alexander Motin Reviewed-by: Alan Somers Signed-off-by: Brooks Davis Closes #18154 --- module/nvpair/nvpair.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c index eb8c14b4a..14fbddb60 100644 --- a/module/nvpair/nvpair.c +++ b/module/nvpair/nvpair.c @@ -3246,7 +3246,8 @@ nvs_xdr_nvl_fini(nvstream_t *nvs) * xdrproc_t-compatible callbacks for xdr_array() */ -#if defined(_KERNEL) && defined(__linux__) /* Linux kernel */ +#if (defined(__FreeBSD_version) && __FreeBSD_version >= 1600010) || \ + defined(_KERNEL) && defined(__linux__) /* Linux kernel */ #define NVS_BUILD_XDRPROC_T(type) \ static bool_t \ @@ -3255,7 +3256,7 @@ nvs_xdr_nvp_##type(XDR *xdrs, void *ptr) \ return (xdr_##type(xdrs, ptr)); \ } -#elif !defined(_KERNEL) && defined(XDR_CONTROL) /* tirpc */ +#elif !defined(_KERNEL) && defined(XDR_CONTROL) /* tirpc, FreeBSD < 16 */ #define NVS_BUILD_XDRPROC_T(type) \ static bool_t \ @@ -3271,7 +3272,7 @@ nvs_xdr_nvp_##type(XDR *xdrs, ...) \ return (xdr_##type(xdrs, ptr)); \ } -#else /* FreeBSD, sunrpc */ +#else /* FreeBSD kernel < 16, sunrpc */ #define NVS_BUILD_XDRPROC_T(type) \ static bool_t \