diff --git a/include/zfs_fletcher.h b/include/zfs_fletcher.h
index d450f7f5e8a..4cd8cabfab9 100644
--- a/include/zfs_fletcher.h
+++ b/include/zfs_fletcher.h
@@ -60,6 +60,8 @@ _ZFS_FLETCHER_H int fletcher_2_incremental_native(void *, size_t, void *);
_ZFS_FLETCHER_H int fletcher_2_incremental_byteswap(void *, size_t, void *);
_ZFS_FLETCHER_H void fletcher_4_native_varsize(const void *, uint64_t,
zio_cksum_t *);
+_ZFS_FLETCHER_H void fletcher_4_byteswap_varsize(const void *, uint64_t,
+ zio_cksum_t *);
_ZFS_FLETCHER_H void fletcher_4_byteswap(const void *, uint64_t, const void *,
zio_cksum_t *);
_ZFS_FLETCHER_H int fletcher_4_incremental_native(void *, size_t, void *);
diff --git a/lib/libzfs/libzfs.abi b/lib/libzfs/libzfs.abi
index 6349fca09bc..ad28c876630 100644
--- a/lib/libzfs/libzfs.abi
+++ b/lib/libzfs/libzfs.abi
@@ -189,6 +189,7 @@
+
@@ -1668,8 +1669,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1681,6 +1777,14 @@
+
+
+
+
+
+
+
+
@@ -3830,6 +3934,10 @@
+
+
+
+
@@ -3854,9 +3962,6 @@
-
-
-
@@ -4529,10 +4634,6 @@
-
-
-
-
@@ -4642,6 +4743,9 @@
+
+
+
@@ -4909,6 +5013,12 @@
+
+
+
+
+
+
@@ -5155,6 +5265,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8337,6 +8460,7 @@
+
@@ -10331,6 +10455,12 @@
+
+
+
+
+
+
diff --git a/module/zcommon/zfs_fletcher.c b/module/zcommon/zfs_fletcher.c
index 1a7dde1dd8f..5f6f37157ff 100644
--- a/module/zcommon/zfs_fletcher.c
+++ b/module/zcommon/zfs_fletcher.c
@@ -499,6 +499,13 @@ fletcher_4_native_varsize(const void *buf, uint64_t size, zio_cksum_t *zcp)
fletcher_4_scalar_native((fletcher_4_ctx_t *)zcp, buf, size);
}
+void
+fletcher_4_byteswap_varsize(const void *buf, uint64_t size, zio_cksum_t *zcp)
+{
+ ZIO_SET_CHECKSUM(zcp, 0, 0, 0, 0);
+ fletcher_4_scalar_byteswap((fletcher_4_ctx_t *)zcp, buf, size);
+}
+
static inline void
fletcher_4_byteswap_impl(const void *buf, uint64_t size, zio_cksum_t *zcp)
{
diff --git a/module/zfs/vdev_draid.c b/module/zfs/vdev_draid.c
index c76557e80c9..8f556b86878 100644
--- a/module/zfs/vdev_draid.c
+++ b/module/zfs/vdev_draid.c
@@ -505,7 +505,11 @@ verify_perms(uint8_t *perms, uint64_t children, uint64_t nperms,
int permssz = sizeof (uint8_t) * children * nperms;
zio_cksum_t cksum;
+#if defined(_ZFS_BIG_ENDIAN)
+ fletcher_4_byteswap_varsize(perms, permssz, &cksum);
+#else
fletcher_4_native_varsize(perms, permssz, &cksum);
+#endif
if (checksum != cksum.zc_word[0]) {
kmem_free(counts, countssz);