From 1e1d3f03e32f1e21b67285b5f9df6578301dbc49 Mon Sep 17 00:00:00 2001
From: John Baldwin <jhb@FreeBSD.org>
Date: Thu, 1 Aug 2024 10:54:20 -0400
Subject: [PATCH] git subrepo pull --force sys/contrib/subrepo-openzfs

subrepo:
  subdir:   "sys/contrib/subrepo-openzfs"
  merged:   "44c138489e51"
upstream:
  origin:   "https://github.com/CTSRD-CHERI/zfs.git"
  branch:   "cheri-hybrid"
  commit:   "44c138489e51"
git-subrepo:
  version:  "0.4.6"
  origin:   "???"
  commit:   "???"
---
 sys/contrib/subrepo-openzfs/.gitrepo               | 4 ++--
 sys/contrib/subrepo-openzfs/lib/libzpool/kernel.c  | 2 ++
 sys/contrib/subrepo-openzfs/module/nvpair/nvpair.c | 2 +-
 sys/contrib/subrepo-openzfs/module/zfs/dbuf.c      | 1 +
 4 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/sys/contrib/subrepo-openzfs/.gitrepo b/sys/contrib/subrepo-openzfs/.gitrepo
index b5c9528e4428..702e8b601311 100644
--- a/sys/contrib/subrepo-openzfs/.gitrepo
+++ b/sys/contrib/subrepo-openzfs/.gitrepo
@@ -6,7 +6,7 @@
 [subrepo]
 	remote = https://github.com/CTSRD-CHERI/zfs.git
 	branch = cheri-hybrid
-	commit = 883fa85588eae47c4a66dd2a90f468077d7c765c
-	parent = 4fb5dcc15f7ce879d85ac4ef0c8f81e9dd3c8802
+	commit = 44c138489e5175af9d099ea82d8a9fb51fdbcbd8
+	parent = 81f320de80d335dd7f7777c05b9b528c0aeebf57
 	method = merge
 	cmdver = 0.4.6
diff --git a/sys/contrib/subrepo-openzfs/lib/libzpool/kernel.c b/sys/contrib/subrepo-openzfs/lib/libzpool/kernel.c
index ffad7fc02bc9..0f1655836b20 100644
--- a/sys/contrib/subrepo-openzfs/lib/libzpool/kernel.c
+++ b/sys/contrib/subrepo-openzfs/lib/libzpool/kernel.c
@@ -132,7 +132,9 @@ zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state)
 	 * multiple of system page size.
 	 */
 	VERIFY0(pthread_attr_setstacksize(&attr, stksize));
+#ifndef __CHERI_PURE_CAPABILITY__
 	VERIFY0(pthread_attr_setguardsize(&attr, PAGESIZE));
+#endif
 
 	VERIFY(ztw = malloc(sizeof (*ztw)));
 	ztw->func = func;
diff --git a/sys/contrib/subrepo-openzfs/module/nvpair/nvpair.c b/sys/contrib/subrepo-openzfs/module/nvpair/nvpair.c
index 47fd1b0fd6f2..a054a6376ca9 100644
--- a/sys/contrib/subrepo-openzfs/module/nvpair/nvpair.c
+++ b/sys/contrib/subrepo-openzfs/module/nvpair/nvpair.c
@@ -55,7 +55,7 @@
 
 #define	skip_whitespace(p)	while ((*(p) == ' ') || (*(p) == '\t')) (p)++
 
-#ifdef __CHERI_PURE_CAPABILITY__
+#if __has_feature(capabilities)
 #define NVPAIR_OVER_ALLOCATE_DECODE
 #endif
 
diff --git a/sys/contrib/subrepo-openzfs/module/zfs/dbuf.c b/sys/contrib/subrepo-openzfs/module/zfs/dbuf.c
index 324bf8cbc276..174784b2ee77 100644
--- a/sys/contrib/subrepo-openzfs/module/zfs/dbuf.c
+++ b/sys/contrib/subrepo-openzfs/module/zfs/dbuf.c
@@ -2856,6 +2856,7 @@ dmu_buf_fill_done(dmu_buf_t *dbuf, dmu_tx_t *tx, boolean_t failed)
 			failed = B_FALSE;
 		} else if (failed) {
 			VERIFY(!dbuf_undirty(db, tx));
+			arc_buf_destroy(db->db_buf, db);
 			db->db_buf = NULL;
 			dbuf_clear_data(db);
 			DTRACE_SET_STATE(db, "fill failed");